摘要:在异步编程中,提供了对象的方式。例如等同于所以可以理解为生成一个实例。那么自然也可以去调用则是配合使用的。等于是等待一个返回值,等待的执行结果。但是函数不会造成阻塞,所以配合使用,则没有影响到外部。
在异步编程中,es6提供了promise对象的方式。
简单的用法
var promise = new Promise((resolve,reject)=>{ if(){ resolve(res) }else{ reject(res) } }) promise.the((res)=>{}).catch((res)=>{})
而async 实则是返回了一个promise对象
async function test(){ console.log("123"); } var restult = test(); console.log(result);//=>>Promise{"123"}; //如果函数return 一个直接量,那么就等于直接去调用Promise.resolve()方法 //Promise.resolve方法也就是生成一个Promise实例,并且其直接调用resolve。 //例如 Promise.resolve("test"); //等同于 new Promise((resolve,reject)=>resolve("test")); //所以async可以理解为生成一个promise实例。 //那么自然也可以去调用.then() test.then((res)=>{})
await则是配合async使用的。await等于是等待一个返回值,等待async的执行结果。
async function testAsync() { return Promise.resolve("hello async"); } async function test() { const res = await testAsync(); console.log(res); } test();
输出结果就是"hello async".
await必须配合async使用,但是await的对象可以不是Promise对象,一个普通的函数也可以使用。
如果它等到的不是一个 Promise 对象,那 await 表达式的运算结果就是它等到的东西。
如果它等到的是一个 Promise 对象,await 就忙起来了,它会阻塞后面的代码,等着 Promise 对象 resolve,然后得到 resolve 的值,作为 await 表达式的运算结果。但是async函数不会造成阻塞,所以await配合async使用,则没有影响到外部。
async和await的作用
可以把promise 的then写得简洁,便于理解
流程就是生成一个async函数,然后函数内部去await一个promise对象得运行结果,再用这个结果去调用其它得Promise对象,如此得话then((res)=>{}).then((ress)=>{})。就可以写成
var res = await foo(); var ress = await fob(res); var resss = await foc(ress)
在then链复杂得情况下,promise得参数传递非常复杂,但使用async+await得方式,就如同同步编程一般,非常清晰和流畅。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/107893.html
摘要:对空数组是不会执行回调函数的。就算改变已经发生了,你再对对象添加回调函数,也会立即得到这个结果。用来表示函数是异步的,定义的函数会返回一个对象,可以使用方法添加回调函数。 介绍 通过Array/Object/Function基础类型编写。 看到自己不了解的或者比较新颖的用法便会写上。 不定时更新内容。 本文首发于我的个人网站: Timbok.top 目录 Array 迭代方法 ...
摘要:版本以及之前,本身还没有异步执行代码的能力,宿主环境传递给引擎,然后按顺序执行,由宿主发起任务。采纳引擎术语,把宿主发起的任务称为宏观任务,把引擎发起的任务称为微观任务。基本用法示例的回调是一个异步的执行过程。 笔记说明 重学前端是程劭非(winter)【前手机淘宝前端负责人】在极客时间开的一个专栏,每天10分钟,重构你的前端知识体系,笔者主要整理学习过程的一些要点笔记以及感悟,完整的...
摘要:版本以及之前,本身还没有异步执行代码的能力,宿主环境传递给引擎,然后按顺序执行,由宿主发起任务。采纳引擎术语,把宿主发起的任务称为宏观任务,把引擎发起的任务称为微观任务。基本用法示例的回调是一个异步的执行过程。 笔记说明 重学前端是程劭非(winter)【前手机淘宝前端负责人】在极客时间开的一个专栏,每天10分钟,重构你的前端知识体系,笔者主要整理学习过程的一些要点笔记以及感悟,完整的...
摘要:版本以及之前,本身还没有异步执行代码的能力,宿主环境传递给引擎,然后按顺序执行,由宿主发起任务。采纳引擎术语,把宿主发起的任务称为宏观任务,把引擎发起的任务称为微观任务。基本用法示例的回调是一个异步的执行过程。 笔记说明 重学前端是程劭非(winter)【前手机淘宝前端负责人】在极客时间开的一个专栏,每天10分钟,重构你的前端知识体系,笔者主要整理学习过程的一些要点笔记以及感悟,完整的...
阅读 1409·2021-09-10 11:27
阅读 2364·2019-08-30 15:53
阅读 1215·2019-08-30 13:10
阅读 2944·2019-08-30 11:09
阅读 1047·2019-08-29 17:23
阅读 625·2019-08-29 17:05
阅读 2909·2019-08-29 15:10
阅读 2314·2019-08-29 13:22