Javascript Node.js Q.all()和承诺数组
在node.js中,我有一个承诺数组,但是当我想要执行一个Q.all()时,我就开始执行了;在这个过程中,似乎什么都没有发生。也许我的阵列中有一个未解决的承诺,它阻止了进程?我不确定我在这里做的是什么,但我的目标是一次执行所有这些函数,然后返回完整的“令牌”数组以将其发送到另一个文件中。Javascript Node.js Q.all()和承诺数组,javascript,arrays,node.js,firebase,Javascript,Arrays,Node.js,Firebase,在node.js中,我有一个承诺数组,但是当我想要执行一个Q.all()时,我就开始执行了;在这个过程中,似乎什么都没有发生。也许我的阵列中有一个未解决的承诺,它阻止了进程?我不确定我在这里做的是什么,但我的目标是一次执行所有这些函数,然后返回完整的“令牌”数组以将其发送到另一个文件中。如何使用Q.all()正确执行此操作? 我的“承诺”数组已满,现在 我想在这里执行一次all in,然后获取数组中捕获的所有令牌 Q.all(promises).then(function(result
如何使用Q.all()正确执行此操作?
我的“承诺”数组已满,现在 我想在这里执行一次all in,然后获取数组中捕获的所有令牌
Q.all(promises).then(function(results) {
var uniqueNames = [];
for (i = 0; i < token.length; i++) {
if (uniqueNames.indexOf(token[i]) === -1) {
uniqueNames.push(token[i]);
console.log('tokens' + token[i]);
}
},
// error
function(response) {
console.log('Error in then' + response);
}).catch(function(error) {
console.log('CATCH ERROR' + error);
});
// Send token array to the API
});
Q.all(承诺)。然后(函数(结果){
var uniqueNames=[];
对于(i=0;i
我真的不明白这个过程。你能解释一下这个代码有什么问题吗?我成功了:
var pipo = new Array();
let count = 0;
promises.forEach(() => console.log(++count, 'done'));
已被替换为var pipo = [];
然后我使用了“async”并使用map而不是“forEach”正如@Kato所说,这个错误是我的一个承诺被拒绝了。我用以下命令调试它:
var pipo = new Array();
let count = 0;
promises.forEach(() => console.log(++count, 'done'));
最后,我使用了Q.all()方法和.then()以及最重要的.catch()!!!再次感谢各位帮助我解决此问题。您的问题可能与for循环有关。尝试将
for(pipo中的var键)
的函数块内容提取到一个单独的函数中,看看是否有帮助。(谷歌不会在循环javascript中创建函数)。我建议在这里改用array.map()
。首先,您需要添加一个.catch()块来捕获输出的任何错误。您还应该在调用Q.all()方法之前(确保代码在此处实际生成)和在.then()内(这样您就知道它是否真正解析)进行日志记录。作为最后手段,您需要执行let count=0;promises.forEach(()=>console.log(++count,'done');(基本调试尽职调查;检查所有输出并隔离故障点)谢谢@Kato。我用.catch()块编辑了我的问题我照你说的做了!我检查了所有的输出,一切正常,但我记录了“当时出错”。现在,我知道问题出在哪里了。我如何解决这个问题?这意味着您的一个承诺是调用reject(),但不传递任何细节。因此,你需要兑现我上面提到的承诺,找出哪一个,然后在那里埋头苦干。