Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法进入异步(同步)函数/空结果的回调_Javascript_Node.js_Asynchronous_Sails.js_Waterline - Fatal编程技术网

Javascript 无法进入异步(同步)函数/空结果的回调

Javascript 无法进入异步(同步)函数/空结果的回调,javascript,node.js,asynchronous,sails.js,waterline,Javascript,Node.js,Asynchronous,Sails.js,Waterline,所以我使用的是async,这个函数将输出一些ID和计数结果,而不是“回调” 为什么呢?我找不到我做错了的东西,看起来和医生的一样,我以前也用过同样的方法 编辑:是的,我可以像你们建议的那样把回调放在if之后,但是我得到一个空的rez。为什么? 异步是否只在一个级别工作?(我的意思是,我在2.exec()中)代码中有一个小问题。对于async.each方法,在作为处理函数的第二个参数中,我们必须调用callback()以移动到下一个元素。如果我们不调用callback(),那么If将永远不会从函数

所以我使用的是async,这个函数将输出一些ID和计数结果,而不是“回调”

为什么呢?我找不到我做错了的东西,看起来和医生的一样,我以前也用过同样的方法

编辑:是的,我可以像你们建议的那样把回调放在if之后,但是我得到一个空的rez。为什么?
异步是否只在一个级别工作?(我的意思是,我在2.exec()中)

代码中有一个小问题。对于async.each方法,在作为处理函数的第二个参数中,我们必须调用callback()以移动到下一个元素。如果我们不调用callback(),那么If将永远不会从函数中出现

在您的情况下,仅当
if(countRes==2)
时才调用callback(),但其他情况如何?在其他情况下,async.each()等待callback()处理数据中的下一项,但由于我们没有调用callback(),因此等待它

解决方案:在
if(countRes==2)
之外调用callback()。有关详细信息,请查看下面的代码段:

GivenQuestion.count().where({
                        partie_id: d.partie_id,
                        user_id: me
                    }).exec(function(e, countRes) {
                        console.log(countRes);
                        if (countRes==2){
                            rez.push(d.partie_id);
                        }
                        callback();
                    });

如果您仍然发现问题,请还原。

需要两个输入来更深入地了解问题:

  • 您是否检查了条件如果(countRes==2)结果为?因为如果此条件的计算结果为falserez始终为空

  • 如果如果(countRes==2)计算结果为true,那么在这种情况下d.partie\u id的值是多少

  • 请提供这些投入


    另外,异步。每个都在多个级别上工作。我做了一个在async中使用async的实现。因此,它看起来不像是异步的错误。

    If
    countRes=2
    您没有调用
    callback()
    。看起来您应该将
    callback()
    移到
    if
    语句之外,这样每次
    async迭代都会调用它。每次
    。实际上,如果我这样做,问题是rez是空的。可能是因为我在一个执行官里面,而这个执行官在另一个执行官里面?也许异步只在顶层工作?要用真实的条件编辑我的第一篇文章,条件评估为真。d.partie_id是该方的id(英语游戏)。因此,如果我也使用console.log(d.partie_id),我会得到这个10 55BA5186DBA2DF017E6DF63 1 55ba4e16a4ad93ac1415e732 55BA56131451B256915112 4 55ba4f086ee315de1552348e 1 55BA51368C142B1751FBD5 2 55BA56131451B256915112 4 55BA4F086EE315DE2348E在.count之前和之后,我也尝试在rez中添加了一些东西,它成功了。但不幸的是,我需要.count回调中的数据
    
    GivenQuestion.count().where({
                            partie_id: d.partie_id,
                            user_id: me
                        }).exec(function(e, countRes) {
                            console.log(countRes);
                            if (countRes==2){
                                rez.push(d.partie_id);
                            }
                            callback();
                        });