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方式
假设两个业务分很多步骤完成,并且每个步骤都是触发器,依赖上两个步骤的结果。2、可以对Promise进行并行处理
作者:没了提心吊胆的稗子
链接:
https://www.jianshu.com/p/fb1da22f335d 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
