gpt4 book ai didi

javascript - Array.every() - 可以在回调中返回吗?

转载 作者:行者123 更新时间:2023-11-29 21:38:08 26 4
gpt4 key购买 nike

我正在解析输入文件并使用 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;
}
}
});

所以在我的例子中,当用户输入输入时,提示调用回调函数。此时 where 很清楚,可以处理下一个元素。那么此时如何调用return来继续every()函数呢?

谢谢你的帮助。

最佳答案

您不能同步执行异步操作,这实际上是您要尝试做的事情。正如评论中提到的, promise 是最好的方式。如果想直接写,最简单的做法是:

function handle_users(users) {
var i = 0;
function _internal() {
if (i >= users.length) return;
var user = users[i];
if (user.enabled == 1) {
if (user.mobile == 1) {
prompt.start();
prompt.get(['mCode'], function (err, result) {
//Do something...
//return needed here!
i++;
_internal();
});
} else {
i++;
_internal();
return true;
}
}
internal();
}

我们定义了一个内部函数,我们从 prompt.get 的回调中以一种递归的方式调用它。

如果想获取所有用户都合格或者输入正确关键字什么的信息,那么在顶层保留一个boolean变量,失败时设置为false,然后从返回函数返回的地方。或者,如果您想在第一次失败时停止处理,就像 every 所做的那样,您可以在 _internal 的顶部检查并立即返回。

关于javascript - Array.every() - 可以在回调中返回吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34238678/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com