我需要处理一些数据。我可以同步和异步地这样做(简化):
是否可以使用生成器重写异步代码?我希望我有一些For循环代码,而不是递归。
发布于 2017-06-08 15:57:42
使用等待 (一种较新的ES2017技术,即建立在ES6的发电机上),并假设,正如您所说的:
['apple', 'peach', 'banana']).then() (如果使用节点7+或当前浏览器,这是个好主意)然后:
var doThing = async function (input) {
return new Promise(function(resolve, reject) {
setTimeout(function(){
resolve(`Result for ${input}`)
}, 2000);
});
}
var start = async function(listOfThings){
var result = await Promise.all(listOfThings.map(doThing))
console.log('All done', result)
}
start(['apple', 'peach', 'banana'])将返回:
All done [ 'Result for apple', 'Result for peach', 'Result for banana' ]要从网络中获取一些数据,只需将setTimeout替换为superagent,或者(如果您想编写自己的查询字符串编码、URL处理等) fetch。
https://stackoverflow.com/questions/44439745
复制相似问题