【发布时间】:2016-03-18 06:14:26
【问题描述】:
我正在解析一个输入文件并使用 Array.every 函数遍历每个元素。根据结构,需要用户手动输入。 因此,例如,如果您有这样的事情:
configData.users.every(function(user){
if(user.enabled == 1){
if(user.mobile == 1){
prompt.start();
prompt.get(['mCode'], function (err, result) {
//Do something...
//return needed here!
});
}else{
//Do something else...
return true;
}
}
});
所以在我的情况下,提示是在用户输入输入时调用回调函数。此时,哪里很清楚,可以处理下一个元素。那么此时如何调用 return 来继续执行 every() 函数呢?
感谢您的帮助。
【问题讨论】:
-
你说的意思能再清楚一点那么我现在如何调用return来继续every()函数?
-
好吧,当你为实际元素返回 true 时,every 函数只处理下一个元素。所以我想在代码示例中描述的方法的回调函数中调用它。但它不起作用。也许它是一个范围的事情?
-
是的,这是一个范围的事情,你不能从回调中返回,它发生在不同的上下文中。您应该使用 Promise 来处理您的问题,这是在执行其他任何操作之前等待回调中发生某些事情的唯一方法。您还需要使用 reduce 而不是 every - 发现这个答案会有所帮助:stackoverflow.com/questions/17757654/…
-
@oshnaps 您关于承诺的陈述不正确。以及整个“这是一个范围的事情,你不能从回调中返回”这句话是错误的。
-
@oshnaps 我不明白 reduce 对我有什么帮助?我正在解析 json 结构。所以不需要对数组的条目求和。 Promise 听起来不错,但我认为您不能将它们与每个功能一起使用。
标签: javascript arrays node.js