其实深入理解:async / await 异步编程技术详解的问题并不复杂,但是又很多的朋友都不太了解,因此呢,今天小编就来为大家分享深入理解:async / await 异步编程技术详解的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!
返回“你好世界”;
}
timout()此时没有输出。
console.log(timeout()) 此时console.log输出一个promise对象。
请注意,async 函数返回一个Promise 对象;要获取promise对象的返回值,需要使用then方法:
异步函数超时(){
返回“你好世界”
}
超时().then(结果={
控制台.log(结果)
})
console.log("虽然它在后面,但我先执行它") 在控制台中,首先打印"虽然它在后面,但我先执行它",然后打印"hello world"。说明异步函数不会阻塞后续代码的执行。
Console.log(timeout()) 上面代码打印的promise已经解决了,
Promise {:"hello world"} 这是async函数的内部实现原理:如果async函数中有返回值,则调用该函数时,内部会调用Promise.solve()方法进行转换进入一个promise.resolve对象作为返回;但如果报告内部错误,则会调用Promise.reject() 返回一个Promise 对象。
相应修改超时函数:
异步函数超时(标志){
如果(标志){
返回“你好世界”
}别的{
返回“失败”
}
}
控制台.log(超时(真))
console.log(timeout(false)) 控制台打印如下:
承诺{:"hello world"}
Promise{:"failure"}
await简介
await表示等待。任何表达式都可以放在await关键字之后,但更常见的是返回promise对象的表达式。注意await关键字只能放到async函数里面构造一个函数并返回一个promise对象,该函数是在2秒后将输入值乘以2:
函数doubleAfter2seconds(num){
返回新的Promise((解决,拒绝)={
设置超时(()={
解决(2*num)
},2000)
})
现在编写另一个异步函数,以便您可以使用await 关键字。放在await后面的是一个可以返回promise对象的表达式,即上面的doubleAfter2seconds函数:
异步函数测试(){
让结果=等待doubleAfter2seconds(100)
控制台.log(结果)
}调用测试函数,打开控制台,2秒后输出200。
代码执行过程:调用测试函数时,遇到await,await表示等待。当代码到达这里时,就暂停在这里,不再继续执行,等待promise对象执行完毕。然后获取promise.resolve的值并返回。获得返回值后继续执行。具体到上面的代码:遇到await后,代码暂停执行,等待doubleAfter2seconds(100)完成执行。 doubleAfter2seconds(100) 返回的Promise 开始执行。 2 秒后,promise 解析并返回200。它被分配给result,暂停结束。代码开始执行。
这个函数看不到async/await的作用,但是如果把三个doubleAfter2seconds()函数的结果相加呢?
异步函数tribleTest(){
让第一=等待doubleAfter2seconds(100);
让第二个=等待doubleAfter2秒(100);
让第三个=等待doubleAfter2秒(100);
console.log(第一+第二+第三);
好了,文章到此结束,希望可以帮助到大家。
【深入理解:async / await 异步编程技术详解】相关文章:
2.米颠拜石
3.王羲之临池学书
8.郑板桥轶事十则
用户评论
终于明白异步操作是怎么工作的了!
有9位网友表示赞同!
感觉异步函数能让我写出更流畅、更简洁的代码。
有11位网友表示赞同!
学习下 async/await 是提高编程效率的大法啊!
有12位网友表示赞同!
之前一直对异步编程没头绪,现在看这个标题挺心动的。
有18位网友表示赞同!
终于有机会深入了解一下 async/await 了,期待能写出更强大的应用。
有12位网友表示赞同!
异步函数这技术简直太牛了,可以用在你做任何网络请求的地方。
有15位网友表示赞同!
以前用 Promise 就感觉很复杂,看能不能通过 async/await 简化代码流程。
有19位网友表示赞同!
很多资料都说 async/await 是javascript 的必修课,这下终于可以去学习了!
有10位网友表示赞同!
异步编程确实能提高性能,这篇文章肯定有干货!
有6位网友表示赞同!
想用 async/await 来实现一些复杂的后台任务处理。
有8位网友表示赞同!
原来异步函数还能写得这么优雅,让我重新认识了javascript
有13位网友表示赞同!
感觉这个技术可以帮我理解并发编程的逻辑。
有5位网友表示赞同!
学习async/await ,希望能把我的代码变成更高效的那种!
有17位网友表示赞同!
之前没接触过异步编程,这篇文章算是入门资料之一吧?
有6位网友表示赞同!
有了 async/await ,我可以更清晰地组织复杂的任务流程。
有13位网友表示赞同!
想要实现实时数据更新,相信 async/await 会起到关键作用。
有6位网友表示赞同!
学习一些新的技术总是好的,比如这个async/await。
有8位网友表示赞同!
看标题感觉这篇文章应该很详细,可以把异步编程讲透了!
有11位网友表示赞同!
期待这篇关于 async/await 的文章能让我更快地上手!
有6位网友表示赞同!