遇到的问题是这样:
有一个对象数组存储了参数和结果,
通过 for 循环构造多个 promise,每个 promise 里面会用到数组中的一个对象,并在得到结果之后回写结果
现在遇到的问题是似乎回写的时候变量已经变化了,想知道这种情况下,如何把数组里面的对象传到 then 里去并在 then 中修改?
初次用异步,踩了很多坑,求指教这种情况下的最佳实践?是作为参数往下传么?
1
noe132 2017-05-05 20:03:19 +08:00
var objarr = [{}, {}, {}]
promise.all(objarr.map(v => { return new Promise((resolve, reject) => { // TODO jobs if (err) reject(err) resolve({ message: 'your message', originalObject: v }); }).then(data => { console.log(data.originalObject); }).catch(err => { console.log(err.message); }); })); 简单的例子。在 resolve 的时候返回一个对象就行,添加一个属性保持对原对象的引用,在 then 里就能取到了。 |
2
noe132 2017-05-05 20:04:01 +08:00
|
3
cgcheng OP |
4
ETiV 2017-05-05 22:41:21 +08:00
引入 bluebird as Promise
Promise.map( items, item=>{} ) .then() |