标签:出错 tab new 对象 fst ... 执行 today rom
await 是 async wait 的简写, 是 generator 函数的语法糖。
async 函数的特点:
asyncReadFile = async function () { var f1 = await readFile(‘/etc/fstab‘) var f2 = await readFile(‘/etc/shells‘) console.log(f1.toString()) console.log(f2.toString()) }
function getDay () { return new Date().getDay() } const today = await getDay () // Uncaught SyntaxError: Unexpected identifier
async function getName () { return ‘wangxi‘ } getName() // Promise {[[PromiseStatus]]: "resolved", [[PromiseValue]]: "wangxi"}
async function getName () { return ‘wangxi‘ } getName().then(value => console.log(value)) // wangxi
await
语句后面的 Promise 变为reject
,那么整个async
函数都会中断执行async function f() { await Promise.reject(‘出错了‘) await Promise.resolve(‘hello world‘) // 不会执行 } f() // VM259:4 Uncaught (in promise) 出错了
async function f() { try { await Promise.reject(‘出错了‘) } catch(e) { } return await Promise.resolve(‘hello world‘) } f().then(v => console.log(v))
或者在 await 后面的 Promise 对象加一个 catch 方法来处理错误
async function f() { await Promise.reject(‘出错了‘).catch(e => console.log(e)) await Promise.reject(‘又出错了‘).catch(e => console.log(e)) return await Promise.resolve(‘hello world‘) } f().then(v => console.log(v)) // 出错了 // 又出错了 // hello world
async function f () { // 先后,先执行 getName() 再执行 getAge() const name = await getName() const age = await getAge() console.log(name, wangxi) // wangxi 25 // 同时触发 let [name1, age1] = await Promise.all([getName(), getAge()]) console.log(name1, age1) // wangxi 25 }
标签:出错 tab new 对象 fst ... 执行 today rom
原文地址:http://www.cnblogs.com/wx1993/p/7495180.html