小编Fab*_*bis的帖子

如何使这个异步foreach循环与promises一起工作?

我已经把Promise搞砸了,但是我对他们很陌生,我无法弄清楚如何正确地做到这一点.目前,Promise没有意义,因为它不会等到异步$.get完成.

基本上,每次foreach迭代都有自己的$.get功能,我需要将它们全部完成,然后继续使用"...获取albumart"的部分console.log.

$.get(id,function(data) {
    //(there's some code here)
    var getZippyUrls = new Promise(function(resolve) {
            zippyarray.forEach(function(zippy) {
            //(more code)
            $.get(zippy.full, function(data) {
                //^This is the foreach of $.gets
               //(code's here)
            });  
           resolve(zippyarray);
        });
    });

    //This is my failed Promise ->
    getZippyUrls.then(function(response) {
        console.log("WE'RE OUT " + response.length);
        response.foreach(function(d) {
            console.log("Promise"+d.media);
        });
        console.log('eyyyyyy');
    });

    console.log("...gets albumart");
    //Now after the previous stuff is done, move on
Run Code Online (Sandbox Code Playgroud)

javascript foreach loops asynchronous promise

14
推荐指数
2
解决办法
3万
查看次数

Visual Studio认为一切都是TypeScript资源

我正在使用Cordova构建一个应用程序,我正在尝试构建一个Windows应用程序.使用Cordova CLI没有产生任何好结果,所以我尝试在platforms/windows文件夹中构建Visual Studio解决方案.

问题是它无法构建并返回一长串错误,所有这些都只是说出类似的东西:

TS6054 Build:File'C:/ Code/ProjectClosr/Cordova App/platforms/windows/www/Gruntfile.js'具有不受支持的扩展名.唯一支持的扩展名是".ts",".tsx",".d.ts".

现在,事实证明它认为所有这些文件都是TypeScript文件,即使它们只是自述文件,JavaScript文件,CSS文件等,并且它之所以这样做是因为由于某种原因,其属性中的所有这些文件都具有"包行动"设置到TypeScriptCompile.现在,我没有明显地创建这个解决方案,它是由Cordova自动生成的,但我需要一种方法来解决这个问题,通过某种方式将所有这些属性的"Package Action"属性设置回其真实值,而不是一切都是TypeScript资源.

我该怎么做呢?

visual-studio cordova typescript win-universal-app visual-studio-2015

12
推荐指数
2
解决办法
2134
查看次数

如何优雅地关闭(SIGTERM)Apollo Server 实例?

可以使用 终止实际的 HTTP 服务器实例server.close(callback),但我不确定任何挂起的 WebSocket 操作(通过 WebSocket 运行的突变或查询)会发生什么。由于 http.Server 对 WebSocket 操作一无所知,它可能会忽略它们。如何正确确保当收到 SIGTERM 时,服务器停止接受新请求/webSocket 连接,完成挂起的连接然后关闭?

用谷歌找不到任何关于此的信息。

node.js sigterm express apollo

10
推荐指数
1
解决办法
475
查看次数

New ApplicationDbContext()vs HttpContext.GetOwinContext().Get <ApplicationDbContext>();

我对哪种方式更好以及使用哪种方式感到困惑.当然,如果你总能得到HttpContext.GetOwinContext().Get() ; 那为什么甚至创建一个新的ApplicationDbContext并冒险加倍对象等?

注意:我在这里专门谈论Web应用程序.

c# asp.net asp.net-mvc entity-framework asp.net-identity

8
推荐指数
1
解决办法
2865
查看次数

在Chrome App Webview中加载本地文件

在Chrome打包的应用中,您可以使用它在应用内加载外部网页.有没有办法让他们加载本地文件(打包应用程序内的html文件)?我不能使用iframe,因为iframe不支持外部资源(脚本,图像,等等).

javascript google-chrome webview google-chrome-app

7
推荐指数
1
解决办法
3860
查看次数

VueRouter 默认子路由没有尾部斜杠

VueRouter 总是在子路由的路径之前添加一个尾部斜杠。所以可以说我有一个这样的路由配置:

const routes = [
    path: '/home',
    components: {
        default: HomeBase
    },
    children: [
        {
            path: '',
            component: HomeIndex,
            name: 'home.index'
        },
        {
            path: ':aid',
            component: HomeArticle,
            name: 'home.article'
        }
    ]
]
Run Code Online (Sandbox Code Playgroud)

我希望路线像这样工作:

  • /home -> 加载 HomeIndex
  • /home/123 -> 使用 :aid=123 加载 HomeArticle

但是 VueRouter 在访问子路由时总是在父路由路径上强制使用尾部斜杠,因此路由的工作方式如下:

  • /home/ -> 加载 HomeIndex
  • /home/123 -> 使用 :aid=123 加载 HomeArticle

这对我不起作用,因为我正在使用具有特定 SEO 要求且不需要尾部斜杠的应用程序。

请注意,我使用命名路由来生成 URL 并在路由之间移动,因此虽然我可以直接链接到“/home”,但我想使用路由的名称(“home.index”),因此代码更加枯燥。我可以将路径存储在某个地方的常量中,但这样做的缺点是您不能在以编程方式导航时将 'params' 道具与 'path' 道具一起使用。

我可以将 HomeIndex 完全拆分为单独的路径,因此它不是子项,但我需要将 HomeIndex 和 HomeArticle 都加载到根 HomeBase 组件中。

任何想法我怎么能做到这一点?也许通过一些 VueRouter 钩子或插件?

javascript vue.js vue-router

7
推荐指数
1
解决办法
3896
查看次数

未捕获的 ReferenceError:未定义承诺

我制作的 Chrome 应用程序对我来说非常好,但另一个用户Uncaught ReferenceError: Promise is not defined在启动时遇到错误。出于某种原因,它不明白 Promise 是什么。代码在我这边工作得很好,我以前从来没有遇到过这个错误,但用户每次都会得到它。这里可能是什么问题?

javascript google-chrome promise google-chrome-app

6
推荐指数
1
解决办法
1万
查看次数

TypeScript:同时监视和编译多个目录(monorepo)

我一直在网上寻找解决方案,但没有找到任何有价值的东西。基本上,我正在寻找一种工具或某种方法来同时在多个目录中启动 TypeScript 文件观看/编译。

我有一个包含范围 NPM 包(@test/one、@test/two、@test/ Three 等)的 monorepo,我想同时观看/编译所有这些包。

看起来 TS 并不支持这一点,而且也没有任何工具可以做到这一点。我发现的最接近的是nodemon,我可以让它同时监视多个目录,但它只支持在单个位置执行脚本/二进制文件,而我需要它在更改时在每个监视的目录中执行“tsc”。

我可以用 nodemon 做的最好的事情如下,但当然这不是一个很好的方法,因为它会编译所有包,即使只有一个更改:

npx nodemon --watch test-shared-api --watch test-shared-redux --watch test-shared-types -e js,ts,jsx,tsx --exec "npx tsc --build test-shared-api/tsconfig.json && npx tsc --build test-shared-types/tsconfig.json && npx tsc -build test-shared-redux/tsconfig.json"
Run Code Online (Sandbox Code Playgroud)

同时,我可以在 package.json 中执行以下操作,这更好,但仍然可以做得更好:

  "scripts": {
"ts-watch-shared-types": "tsc -p packages/@test-shared/test-shared-types/tsconfig.json -w",
"ts-watch-shared-api": "tsc -p packages/@test-shared/test-shared-api/tsconfig.json -w",
"ts-watch-shared-redux": "tsc -p packages/@test-shared/test-shared-redux/tsconfig.json -w",
"ts-shared-watch": "concurrently -k -n w: npm:ts-watch-shared-*"
  },
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

npm typescript monorepo

5
推荐指数
1
解决办法
4112
查看次数

JavaScript Promise陷入僵局

我有一个异步功能,我做了多次(2),但由于某种原因,承诺陷入决心.它执行resolve(),但不执行任何操作.

这是函数(基本上是从URL创建一个blob):

function getBlobAt(url, callback) {
console.log("New getBlobAt Call");
return new Promise(function(resolve) {
    console.log("getBlobAt Promise Created");
    window.URL = window.URL || window.webkitURL;
    var xhr = new XMLHttpRequest();
    xhr.open('GET', url, true);
    xhr.responseType = 'blob';
    xhr.onload = function () {
        console.log("getBlobAt promise completed, resolving...");
        var burl = window.URL.createObjectURL(this.response);
        console.log("getBlobAt promise completed, resolving2...");
        resolve(burl);
        console.log("getBlobAt promise completed, resolving3...");
        //window.URL.revokeObjectURL(burl); //DO THIS WHEN LOADING NEW SONG
    };
    console.log("getBlobAt xhr.send() and callback");
    xhr.send();
    callback(xhr);
    //return xhr;
});
}
Run Code Online (Sandbox Code Playgroud)

这是任务图:

            var taskstrings = [endmp3, albumart];
            var getBlobTasks …
Run Code Online (Sandbox Code Playgroud)

javascript jquery resolve promise jquery-deferred

4
推荐指数
1
解决办法
1275
查看次数

C# - SqlDataAdapter 无论如何都不会填充 DataTable

所以我试图用来自 MSSQL 查询的数据填充 DataTable,但由于某种原因它完全拒绝工作,这让我恼火。

当我使用 SqlDataReader 和 Read() 遍历结果时,我得到了结果,即使当我尝试用 SqlDataAdapter 填充 DataTable 时,查询也会出现在 SQL Profiler 上,但没有返回任何数据。

我不知道我的代码是什么,但也许你可以弄清楚:

            try
            {
                // Global variables
                var connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
                var textString = "Pas?kums {0} s?kas p?c {1}!";
                var linkString = @"/Event/Index/{0}";

                using (SqlConnection conn = new SqlConnection(connectionString))
                {
                    // Set variables
                    var findIn24HrsEventsCmd = new SqlCommand(@"
                        SELECT adm.UserID, adm.EventID FROM [dbo].[EventAdmissions] AS adm WHERE EventID IN
                        (
                        SELECT EventID FROM [dbo].[Events]
                        WHERE DATEDIFF(hour, @date, StartTime) BETWEEN 0 AND 24
                        )
                        AND …
Run Code Online (Sandbox Code Playgroud)

c# sql-server datatable

4
推荐指数
1
解决办法
2613
查看次数