async函数
【摘要】 一、Promise与asyncPromise:我们通过在函数内部new Promise返回一个实例,再使用then方法传入回调,达到异步操作的过程async:不需要我们手动返回promise实例,只要在function前加async,async会自动把返回值变为promise实例,javascript引擎会检查return后面是不是一个promise实例,不是的话会用Promise.reso...
一、Promise与async
Promise:我们通过在函数内部new Promise返回一个实例,再使用then方法传入回调,达到异步操作的过程
async:不需要我们手动返回promise实例,只要在function前加async,async会自动把返回值变为promise实例,javascript引擎会检查return后面是不是一个promise实例,不是的话会用Promise.resolve()处理返回结果
async function firstAsync() {
return 27;
}
等价于
async function firstAsync() {
return Promise。resolve(27);
}
console.log(firstAsync().then());// 27
console.log(firstAsync() instanceof Promise); // true
如果async函数体内部有异步操作,需要用到await
async function firstAsync (){
let promise = new Promise ((resolve, reject)=>{
setTimeout(function(){
resolve('now it is done')
},1000)
})// 异步操作,1s后执行
promise.then(val=> {
console.log(val);
})
console.log(2);
return 3;
}
// 2 3 now it is done
但希望输出的的是 now it is done 2 3
可以这么写
async function firstAsync (){
let promise = new Promise ((resolve, reject)=>{
setTimeout(function(){
resolve('now it is done')
},1000)
})// 异步操作,1s后执行
console.log(await promise) // await 等待的是表达式 就是一个结果
console.log(2);
return 3;
}
如果await 后面不是一个promise对象而是常量,会转成一个立即resolve的Promise对象
async function firstAsync (){
let promise = new Promise ((resolve, reject)=>{
setTimeout(function(){
resolve('now it is done')
},1000)
})// 异步操作,1s后执行
console.log(await 30);
console.log(await Promise.resolve(40));
console.log(2);
return 3;
}
// 30 40 2 3
async await 是Promise 的语法糖
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)