如下,麻烦解释一下?
let [foo, bar] = await Promise.all([getFoo(), getBar()]);
我能写成如下的形状吗?foo 和bar 里面存储的和上面的一样吗?
var arr =[1,2]
let [foo, bar] =arr.forEach(function(){
await Promise.all([getFoo(), getBar()]);
})
如下,麻烦解释一下?
let [foo, bar] = await Promise.all([getFoo(), getBar()]);
我能写成如下的形状吗?foo 和bar 里面存储的和上面的一样吗?
var arr =[1,2]
let [foo, bar] =arr.forEach(function(){
await Promise.all([getFoo(), getBar()]);
})
这就是个ES6里面的解构
let [foo,bar]=[数据1,数据2];
foo 就是数据1
bar 就是数据2
Promise.all就是将多个promise组合到一起。
第二点,多个await命令后面的异步操作,如果不存在继发关系,最好让它们同时触发。
let foo = await getFoo();
let bar = await getBar();
上面代码中,getFoo和getBar是两个独立的异步操作(即互不依赖),被写成继发关系。这样比较耗时,因为只有getFoo完成以后,才会执行getBar,完全可以让它们同时触发。
// 写法一
let [foo, bar] = await Promise.all([getFoo(), getBar()]);
// 写法二
let fooPromise = getFoo();
let barPromise = getBar();
let foo = await fooPromise;
let bar = await barPromise;
上面两种写法,getFoo和getBar都是同时触发,这样就会缩短程序的执行时间
摘自 http://es6.ruanyifeng.com/#do...使用注意点
// 写法二
let fooPromise = getFoo();
let barPromise = getBar();
let foo = await fooPromise;
let bar = await barPromise;
上面两种写法,getFoo和getBar都是同时触发,这样就会缩短程序的执行时间
这个写法二,为什么是同时触发了?
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
总共有几点:
总结起来就是,用await去运行一个promise.all,返回一个数组,然后用解构赋值取到值。