使用 promise 系列而不是异步系列
use promise series instead async series
我使用以下 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);
}
现在我想将它转换为蓝鸟 promise 我尝试了以下但延迟不起作用,我想我可能需要 Promise.delay 但不确定如何使用它...
Promise.mapSeries(arr, function(getInfo) {
return getInfo + ' from promise'
}).then(function(results) {
console.log(results)
});
首先你必须按如下方式承诺你的异步函数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))
您似乎在寻找
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')
.
我使用以下 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);
}
现在我想将它转换为蓝鸟 promise 我尝试了以下但延迟不起作用,我想我可能需要 Promise.delay 但不确定如何使用它...
Promise.mapSeries(arr, function(getInfo) {
return getInfo + ' from promise'
}).then(function(results) {
console.log(results)
});
首先你必须按如下方式承诺你的异步函数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))
您似乎在寻找
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')
.