深入理解await与async

2022-12-30 0 723

async

做为两个URL放到表达式的后面,则表示该表达式是两个触发器表达式,意味著该表达式的继续执行不能堵塞后面标识符的继续执行 触发器表达式的初始化跟一般表达式那样

async function timeout(){ return “helloworld”; } console.log(timeout()); console.log(“我在触发器表达式后面,林美珠继续执行谁呢”); // Promise { helloworld } // 我在触发器表达式后面,林美珠继续执行谁呢 async function timeout(){ return “helloworld”; } timeout().then((result)=>{ console.log(result); }); console.log(“我在触发器表达式后面,林美珠继续执行谁呢”); // 我在触发器表达式后面,林美珠继续执行谁呢 // helloworld

这时先输入的是后面的一个个文字,说明触发器表达式的继续执行没堵塞后面的标识符继续执行,async的外部同时实现基本原理是假如该表达式中有两个回到值,当初始化该表达式时,预设会在外部初始化Promise.solve() 方式把它转换成两个Promise 第一类做为回到,若表达式外部放出严重错误,则初始化Promise.reject()回到两个Promise 第一类

async function timeout1(flag){ if(flag){ return “hello world”; }else{ throw new Error(“error!!”); } }console.log(timeout1(true)); console.log(timeout1(false)); // Promise {<resolved>: “hello world”} // Promise {<rejected>: Error: error!!…}

既然async回到的是两个Promise 第一类,那么Promise 的所有用法他都可以用,如Promise.catch捕获异常等

await

await即等待,用于等待两个Promise第一类。它只能在触发器表达式 async function中使用,否则会报错

它的回到值不是Promise第一类而是Promise对象处理之后的结果

await表达式会暂停当前 async function的继续执行,等待Promise 处理完成。若 Promise 正常处理(fulfilled),其回调的resolve表达式参数做为 await 表达式的值,继续继续执行 async function,若 Promise 处理异常(rejected),await 表达式会把 Promise 的异常原因放出。假如 await 操作符后的表达式的值不是两个 Promise,那么该值将被转换为两个已正常处理的 Promise。

与Promise对比

1、不再需要多层.then方式

假设两个业务分很多步骤完成,并且每个步骤都是触发器,依赖上两个步骤的结果。
深入理解await与async

2、可以对Promise进行并行处理

深入理解await与async

作者:没了提心吊胆的稗子

链接:

https://www.jianshu.com/p/fb1da22f335d
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务