与 Promise 一起使用时,异步瀑布不执行下一个回调方法

Posted

技术标签:

【中文标题】与 Promise 一起使用时,异步瀑布不执行下一个回调方法【英文标题】:async waterfall not executing next callback method when used with a promise 【发布时间】:2016-08-19 07:24:17 【问题描述】:
async.waterfall(eventIDs.map(function (eventId) 
            console.log(eventId);
            return function (lastItemResult, nextCallback) 
                if (!nextCallback) 
                    nextCallback = lastItemResult;
                    lastItemResult = null;
                
                // same execution for each item in the array
                var eventPromise = loadEventsData.loadFormData(eventId, apiList);
                eventPromise.then(function (response) 
                    console.log(response);
                    var itemResult = response;
                    // results carried along from each to the next

                    nextCallback(itemResult, nextCallback);
                );


            ), function (err, result) 
            // final callback
        );

console.log(eventId) 的输出是正确的,它被打印的次数与数组中的项目一样多。但是console.log(response) 只打印一次,这意味着没有正确调用回调?

【问题讨论】:

【参考方案1】:

我修改了,问题解决了

nextCallback(null, itemResult);

【讨论】:

以上是关于与 Promise 一起使用时,异步瀑布不执行下一个回调方法的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript 异步编程:promise 与生成器

在映射下一项之前,异步等待映射不等待异步函数在映射函数内部完成

JavaScript——异步操作以及Promise 的使用

ES6:Promise与异步编程

ES6:Promise与异步编程

JS-Promise(使异步操作同步执行)