通常我们希望一系列异步任务按顺序执行的时候,会通过多层回调来实现
function say(word,callback){
settimeout(()=>{
console.log(word)
callback()
})
}
say('ni',function()=>{
say('hao',function()=>{
。。。。
})
扫描二维码关注公众号,回复:
6181583 查看本文章
})
这样的代码不易理解难以维护
es6的promsise 使用
function add(n){
return new proimise((resolve,reject)=>{
settimeoUT(()=》{
resolve(n+n)
})
})
}
say(1).then(mul).then(add)
也可以用aynsc函数
async function test(num){
let a=await add(num);
a为resolve中参数
let b=await mul(a)
return b
async返回一个promise return的值可以在then中取到
await可能出错 用一个try catch即可
}
promise还有then.catch,finally
race([p1,p2]) all([p1,p2])
promise的执行循序和
setTimeout(()=》{
settimeout(()=>{
},500)
},300)一样的
如果你想让一个程序在最后执行
Promise.resolve('foo')
// 等价于
new Promise(resolve => resolve('foo'))
将其包装为promise对象
setTimeout(function () {
console.log('three');
}, 0);
Promise.resolve().then(function () {
console.log('two');
});
console.log('one');
// one
// two
// three