javascript - Async/Await报错
问题描述
这段代码问题在哪,一运行就报错
var sleep = async function(para) {return new Promise(function(resolve, reject) { setTimeout(function() {resolve(para * para) }, 1000)}) } var errorSleep =async function(para) {return new Promise(function(resolve, reject) { setTimeout(function() {reject(’ ErrorSleep’) }, 1000)}) } try {var result1 = await sleep(1);var result2 = await errorSleep(4);var result3 = await sleep(1);console.log(’result1: ’, result1)console.log(’result2: ’, result2)console.log(’result3: ’, result3) } catch (err) {console.log(’err: ’, err)console.log(’result1: ’, result1)console.log(’result2: ’, result2)console.log(’result3: ’, result3) }
问题解答
回答1:await 只能在 async 包装的函数里面用。就和yield只能在generator函数里面用一样。
回答2:楼上不是说了吗,丢到async函数里。
var sleep = async function(para) {return new Promise(function(resolve, reject) { setTimeout(function() {resolve(para * para) }, 1000)}) } var errorSleep =async function(para) {return new Promise(function(resolve, reject) { setTimeout(function() {reject(’ ErrorSleep’) }, 1000)}) }//一样丢到async函数里 var af = async function() {try { var result1 = await sleep(1); var result2 = await errorSleep(4); var result3 = await sleep(1); console.log(’result1: ’, result1) console.log(’result2: ’, result2) console.log(’result3: ’, result3)} catch (err) { console.log(’err: ’, err) console.log(’result1: ’, result1) console.log(’result2: ’, result2) console.log(’result3: ’, result3)} } af();回答3:
await 只能在 async 函数(函数,函数表达式,箭头函数) 中使用,所以你只需要写个 async 函数把那段代码包起来就好了,我比较喜欢写 main 函数而不是直接在全局作用域内运行
async function main() { try {var result1 = await sleep(1);var result2 = await errorSleep(4);var result3 = await sleep(1);console.log('result1: ', result1);console.log('result2: ', result2);console.log('result3: ', result3); } catch (err) {console.log('err: ', err);console.log('result1: ', result1);console.log('result2: ', result2);console.log('result3: ', result3); }}// 记得调用main();
另外也可以使用 async IIFE 表达式,比如
// IIFE 函数表达式(async function() { // todo main process})();// IIFE Lambda 表达式(箭头函数表达式)(async () => { // todo main process})();
相关文章:
1. Docker for Mac 创建的dnsmasq容器连不上/不工作的问题2. docker安装后出现Cannot connect to the Docker daemon.3. mysql - php 如何網址中出現該頁標題?4. mysql - 为什么where条件中or加索引不起作用?5. javascript - 子级的div是float浮动;怎么让子级的div的高度继承父级的高度6. javascript - 请教空白文本节点的问题7. javascript - 天猫首页首屏数据来源8. ios - 类似微博首页,一张图的时候是如何确定图大小的?9. Span标签10. django进行数据库的查询
