Ale*_*lls 8 javascript node.js ecmascript-6 es6-promise
我有一种情况,使用Promise.all这样的方式非常方便,Promise.all({})而不是更标准的Promise.all([]).
但这似乎不起作用
Promise.all({a:1,b:2}).then(function(val){
console.log('val:',val);
});
Run Code Online (Sandbox Code Playgroud)
当然这当然
Promise.all([1,2,3]).then(function(val){
console.log('val:',val);
});
Run Code Online (Sandbox Code Playgroud)
(我期望Promise.all能够映射Object文字的值,但保持密钥完整.)
但是Promise的MDN文档似乎表明Promise all适用于任何迭代.据我所知,对象文字{}是可迭代的.那我错过了什么?
如果您查看mdn 文档,则对象没有迭代器符号。
您可以做的是使用工具函数创建一个可迭代对象,然后使用它。
引用 objectEntries source,但是nodejs没有实现Reflect,因此为了与node一起使用它,我只需将其更改为使用Object.keys()
function objectEntries(obj) {
let index = 0;
// In ES6, you can use strings or symbols as property keys,
// Reflect.ownKeys() retrieves both
let propKeys = Object.keys(obj);
return {
[Symbol.iterator]() {
return this;
},
next() {
if (index < propKeys.length) {
let key = propKeys[index];
index++;
return { value: [key, obj[key]] };
} else {
return { done: true };
}
}
};
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2294 次 |
| 最近记录: |