【发布时间】:2016-06-20 11:04:39
【问题描述】:
我有一种情况,使用 Promise.all 像 Promise.all({}) 代替更标准的 Promise.all([]) 会非常方便。
但这似乎不起作用
Promise.all({a:1,b:2}).then(function(val){
console.log('val:',val);
});
当然是这样
Promise.all([1,2,3]).then(function(val){
console.log('val:',val);
});
(我希望 Promise.all 映射 Object 文字的值,但保持键不变。)
但the MDN docs for Promise 似乎表明 Promise all 将适用于任何可迭代对象。据我所知,对象文字 {} 是可迭代的。那我错过了什么?
【问题讨论】:
-
不,
{}不是可迭代的。 -
从这些文档中不清楚 {} 是否是可迭代的,但它似乎是 developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
-
@AlexMills 不知道你为什么认为它不清楚。您链接的 MDN 文章解释了“某些内置类型是具有默认迭代行为的内置可迭代对象,例如 Array 或 Map,而其他类型(例如 Object)则不是”。跨度>
-
如果您想知道
{}是否是可迭代的,请尝试在控制台中输入以下任何内容。 (1)[...{}](2)for (i of {}) {}. -
为什么它真的很方便?你没有解释你想要做什么。您可以尝试做很多可能的事情,但是对于将对象塞入 Promise.all 中没有任何一个真正有意义,其目的是合并 Promise,这看起来不像您要尝试的那样做。
标签: javascript node.js ecmascript-6 es6-promise