es6 promise和aysnc函数

通常我们希望一系列异步任务按顺序执行的时候,会通过多层回调来实现

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

猜你喜欢

转载自blog.csdn.net/weixin_42176561/article/details/88552853