我使用以下async.js代码
var arr = ['1', '2'];
async.mapSeries(arr, getInfo, (e, res) => {
console.log(res);
});
function getInfo(name, callback) {
setTimeout(() => {
callback(null, name + ' from async');
}, 500);
}
现在我想将它转换为bluebird promise并尝试以下但延迟不起作用,我想我可能需要和Promise.delay但不知道如何使用它...
Promise.mapSeries(arr, function(getInfo) {
return getInfo + ' from promise'
}).then(function(results) {
console.log(results)
});
答案 0 :(得分:1)
你似乎在寻找
function getInfo(name) {
return Promise.delay(500, name + ' from async');
}
Promise.mapSeries(arr, getInfo).then(results => {
console.log(results)
});
或者你可以写Promise.delay(500).then(() => name + ' from async')
。
答案 1 :(得分:0)
首先,您必须按照以下方式宣传您的异步函数getInfo()
;
function promisify(fun){
return (data) => new Promise((resolve,reject) => fun(data, (err,res) => err ? reject(err) : resolve(res)));
}
function getInfo(name, callback) {
setTimeout(() => {
callback(null, name + ' from async');
}, 500);
}
var getInfoPromise = promisify(getInfo);
getInfoPromise("Mr. Promise").then(val => console.log(val))