使用Promise.mapSeries等待回调

时间:2016-12-07 16:19:23

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

我有一个:

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);
        });

如果你有一个等待回调或转换为promise的解决方案(不编辑函数(theFunction)),我很乐意学习它。

提前致谢。

1 个答案:

答案 0 :(得分: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将在遇到的第一个错误时停止。