async函数是Generator 函数的语法糖,async函数就是将 Generator 函数的星号(*)替换成async,将yield替换成await,仅此而已。
async函数对Generator 函数的改善点有以下几点:
内置执行器,不需要像Generator 函数要去挪用next()才能让函数执行async函数返回一个 Promise 工具。async函数内部return语句返回的值,会成为then方式回调函数的参数。async函数内部抛失足误,会导致返回的 Promise 工具变为reject状态。抛出的错误工具会被catch方式回调函数接收到
下面见例子:
let testAsync = async function () { // throw new Error('抛出一个错误~'); reject() }; testAsync().then(resolve => { console.log(`resolve: ${resolve}`); }, reject => { console.log(`reject: ${reject}`); // 状态变化成reject的回调函数会执行,若是这里没有回调函数,则catch会捕捉,这就是promise的器械了 }).catch(err => { console.log(`err: ${err}`); })
任何一个await语句后面的 Promise 工具变为reject状态,那么整个async函数都市中止执行。
async function f() { await Promise.reject('失足了'); await Promise.resolve('hello world'); // 不会执行 } // 第二行的promise语句不会执行
针对这种情形,有时候我们希望前面的异步函数执行失败后,也不要影响后面的代码执行,这时候就可以用try-catch和promise的catch处置异常,不至于让后面的程序不执行
await后面的异步操作失足,那么等同于async函数返回的 Promise 工具被reject,以是更好把await下令放在try...catch代码块中// 之一种方式 async function f() { try { await Promise.reject('失足了'); } catch (err) { } return await Promise.resolve('hello world'); } // 第二种那时,用catch来处置前面异步的异常情形 async function f() { await Promise.reject('失足了').catch(err => { console.log(err); }) return await Promise.resolve('hello world'); }
若是多个await下令后面的异步操作,若是不存在继发关系,更好让它们同时触发。
let foo = await getFoo(); let bar = await getBar(); // 写法一 let [foo, bar] = await Promise.all([getFoo(), getBar()]); // 写法二 let fooPromise = getFoo(); let barPromise = getBar(); let foo = await fooPromise; let bar = await barPromise; // 同时触发,缩短程序运行时间
await下令只能用在async函数之中,若是用在通俗函数,就会报错。
async function dbFuc(db) { let docs = [{}, {}, {}]; // 报错 docs.forEach(function (doc) { await db.post(doc); }); }
1.阿里云: 本站现在使用的是阿里云主机,平安/可靠/稳固。点击领取2000米代金券、领会最新阿里云产物的种种优惠流动点击进入
今天给大家分享的内容是“北京高端小学妹经纪人在线预约价格方式【赵婵】”,我是赵婵,来自成都市,今年29岁,作为职业:济南伴游,我热爱我的职业:济南伴游。三圍:胸62腰94臀61 鞋碼:36,呆猴的伴游...
“铃!铃!”清晨6点30分,两声急促的警铃,惊醒了睡梦中的科考队员。甲板上传来惊呼:“一大群热带斑海豚!估计超过100头了!” 7月20日在南海某海域拍摄的弗氏海豚。新华社记者张丽芸摄 大家迅...
称呼从正常指令倒推发生混杂的音频指令(如一段人类无法识别的噪音),然后在三星Galaxy S4以及iPhone 6上面被准确识别为相对应的语音指令,变为让手机切换飞翔形式、拨打等。 self.fpt...
东北人打架原因(东北人为什么爱打架)有一次,我的一个南方朋友问我:“东北人为什么爱打架?”东北人打架的频率超出了正常范围 有一次,我的一个南方朋...
声音是个奇妙的东西,我们所听到的不同的声音,是由我们周围空气的微小压着产生的,奇妙之处就在于,空气竟然能将这些压的如此美好、真实的传输相当长的距离。 麦克风,是由声音的振动传到麦克风的振膜上,...
最近非常火爆的国货彩妆品牌,被遭到了众多疑问,有很多网友质疑稚优泉的口红安全吗,小编在这里也说一句,有绝对安全的东西吗,任何事情都没有绝对性,稚优泉的口红还是相当安全的,毕竟口碑在那里摆着,大家都是有...