【问题标题】:Wait callback with Promise.mapSeries使用 Promise.mapSeries 等待回调
【发布时间】:2016-12-08 00:51:50
【问题描述】:

我有这个:

new Promise(function (resolve, reject)
{
    return Promise.mapSeries(array, function(field)
    {
        var objCb = {};
        var params = {};

        objCb.ok = function () {};
        objCb.send = function (data)
        {
            errors.push(data.message);
        };
        objCb.negociate = function (err)
        {
            errors.push(data.message);
        };

        theFunction(params, objCb);
    }
}

我已经测试了多个解决方案,但都不起作用:

        return Promise.promisify(theFunction(params, objCb), {multiArgs: true});

        return Promise.fromCallback(function (objCb)
        {
            return theFunction(params, objCb);
        }, {multiArgs: true}).spread(function (a)
        {
            console.log("==== 1");
            console.log(a);
        });

如果你有一个解决方案可以在 mapSeries 中等待回调或转换为 Promise(无需编辑函数 (theFunction)),我会很高兴学习它。

提前致谢。

【问题讨论】:

    标签: javascript node.js promise sails.js bluebird


    【解决方案1】:

    Promise.mapSeries 返回一个承诺,所以你不需要重新包装它。

    Promise.mapSeries(array, function(field)
    {
        return new Promise( function(resolve, reject)
            {
            var objCb = {};
            var params = {};
    
            objCb.ok = function (resolve()) {};
            objCb.send = function (data)
            {
                reject(data.message);
            };
            objCb.negociate = function (err)
            {
                reject(data.message);
            };
    
            theFunction(params, objCb);
        }
    }
    

    注意:mapSeries 将在遇到第一个错误时停止。

    【讨论】:

    • 感谢您的回复,但不起作用,mapSeries 无限期等待。哦等等,不输入我的条件,我测试一下,我会突然回复。
    • 它工作,我继续测试,但显然它工作正常。谢谢。
    猜你喜欢
    • 2021-06-30
    • 1970-01-01
    • 1970-01-01
    • 2015-02-04
    • 2022-01-21
    • 2018-05-16
    • 1970-01-01
    • 1970-01-01
    • 2021-01-25
    相关资源
    最近更新 更多