javascript - 如何使用异步检测系列返回 Node 中的输出

标签 javascript node.js series async.js

实际上,我想在迭代数组并对其执行方法时根据一些异步调用返回一些输出。当我从第三方服务器获得所需的响应时,我想停止迭代并返回从服务器收到的响应。

因此,为了这个目的,我在 Node 中使用了异步包。我正在使用Detect Series为此目的。

这是我的电话,我正在迭代一个元素数组。可以说我正在通过数字数组调用一个方法。

async.detectSeries([1, 5, 7, 9, 6, 13, 14], checkIfEven, function(err, res) {
        callback(null, res); 
         // res should be coming
         // "Yes I found the Number 6"
         // But coming only 6
    });

所以基本上我需要的是每当找到第一个偶数时做出响应,并且在该迭代之后应该停止。不再执行。

下面是检查数字是否为偶数的通用方法。

checkIfEven(number, callback) {
    setTimeout(function() {
        if (number % 2 == 0) {
            //Truthy Condition
            callback(null, "Yes I found the Number"+number);
        } else {
           //Falsy Condition
            callback(null, false);
        }
    }, 1000);
}

基于返回字符串

"Yes I found the Number"+number-found

类似这样的 react ,我可以控制。但我得到的只是成功回调中的数字本身。在本例中,它将是 6。

所以它只是返回数组中最先通过测试的数字。它起到了识别数字的一半作用,但可以说我想要在对参数应用方法后得到的响应。

请让我知道我哪里出错了。或者有其他更好的方法来解决这个问题,谢谢

最佳答案

使用 detectSeries 时,iteratee 的回调需要一个 bool 值,最终结果将包含通过测试的数组项,而不是您调用回调时使用的值。您传递给它的任何字符串都将被简单地解释为 true

checkIfEven 上,仅返回 truefalse

在最终回调中使用 res 内容调用您的回调

function checkIfEven(number, callback) {
    setTimeout(function() {
        if (number % 2 == 0) {
            //Truthy Condition
            callback(null, true);
        } else {
           //Falsy Condition
            callback(null, false);
        }
    }, 1000);
}

async.detectSeries([1, 5, 7, 9, 6, 13, 14], checkIfEven, function(err, res) {
    callback(null, "Yes I found the Number " + res);
});

关于javascript - 如何使用异步检测系列返回 Node 中的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42248993/

相关文章:

javascript - Meteor.call 并将对象传递给渲染组件

javascript - 在 phonegap 和 Windows Phone 7 中使用 $.ajax 获取静态 html 文件

javascript - connect-modrewrite 将我的 POST 请求更改为 GET

javascript - NodeJS 提示如果在 if 语句中设置了某个对象,则该对象是未定义的

python - Numpy Where 有两个以上的条件

python - 添加 Pandas 系列列表

python - 如何获取特定格式列表中的相关特征?

javascript - 无法处理 x-editable 弹出字段中的验证属性

javascript - 双向绑定(bind)不更新 View 模型

node.js - Angular 5 应用程序在 App Engine 上使用 Angular Universal 进行服务器渲染