也可以做類似到Promise.map
新功能上的對象的工作原理:如果你有Lo-Dash得心應手
function promiseMapObject(obj) {
var keys = Object.keys(obj);
var promises = keys.map(function (key) {
return obj[key];
});
return Promise.all(promises).then(function (results) {
var resultObj = {};
results.forEach(function (result, i) {
resultObj[keys[i]] = result;
});
return resultObj;
});
}
和
promseMapObject({
serial: report.osx_serial(),
…
}).done(console.log);
,這是zipObject
:
function promiseMapObject(obj) {
var keys = Object.keys(obj);
var promises = keys.map(function (key) {
return obj[key];
});
return Promise.all(promises).then(function (results) {
return _.zipObject(keys, results);
});
}
甚至:
function promiseMapObject(obj) {
var keys = Object.keys(obj);
var promises = keys.map(function (key) {
return obj[key];
});
return Promise.all(promises)
.then(_.partial(_.zipObject, keys));
}
我不認爲'。所有()'需要承諾的數組https://github.com/petkaantonov/bluebird/blob/master/API.md#all-- -promise:/ – ThomasReggi 2015-01-09 20:33:15
@ThomasReggi:這個第一句話是*「給定一個包含承諾的數組」*。 – Ryan 2015-01-09 20:35:03
嗯控制檯日誌內,然後是我的所有功能,不承諾價值觀。 – ThomasReggi 2015-01-09 20:36:10