⼩程序使⽤async,await
1. 直接使⽤ async , await 会报错 regeneratorRuntime is not defined
2. 下载第三⽅npm包 regenerator-runtime
3. 下载⽂件中的regenerator-runtime⽂件夹拿出来,放到⼩程序代码中去,⼀般是放在utils⽂件夹
4. 查看下⾯⽰例 async应⽤
//index.js
const regeneratorRuntime =require('../../utils/regenerator-runtime/runtime.js')
Page({
/**
* 页⾯的初始数据
*/
data:{
},
/**
* ⽣命周期函数--监听页⾯加载
*/
async MyAsync(){
return'this is async function'
},
onLoad:function(options){
this.MyAsync().then((res)=>{
console.log('1111'+res)
})
}
})
5. 控制台输出结果如图, async 函数返回的是⼀个 Promise 对象 , async 函数(包含函数语句、函数表达式、Lambda 表达式)会返回⼀
个 Promise 对象,如果在函数中 return ⼀个直接量,async 会把这个直接量通过solve() 封装成 Promise 对象。
async 函数 在没有 await 的情况下执⾏async函数,它会⽴即执⾏,并且返回⼀个 promise 对象,并且绝不会阻塞后⾯的语句
6. await 作⽤ 表达式会暂停当前 async function 的执⾏,等待 Promise 处理完成若 Promise 正常处理,其处理结果作为 await 表达await和async使用方法
式的值,继续执⾏ async function 。若 Promise 处理异常 (rejected) , await 表达式会把 Promise 的异常原因抛出。另外,如果await 操作符号的表达式的值不是⼀个 Promise ,那么该值将被转换为⼀个正常处理的 Promise 。
7. async / await 的优势在于处理then链 ,查看下⾯⽰例
//index.js
const regeneratorRuntime =require('../../utils/regenerator-runtime/runtime.js')
Page({
/**
* 页⾯的初始数据
*/
data:{
},
/**
* ⽣命周期函数--监听页⾯加载
*/
getOneMes(){
console.log('getOneMes one')
return new Promise((resolve, reject)=>{
url:'suggest.taobao/sug?code=utf-8&q=⾐服&callback=cb', method:'GET',
dataType:'json',
success:function(res){
console.log('one:')
resolve(res)
},
})
})
},
getTwoMes(){
console.log('getOneMes two')
return new Promise((resolve, reject)=>{
url:'suggest.taobao/sug?code=utf-8&q=帽⼦&callback=cb', method:'GET',
dataType:'json',
success:function(res){
console.log('two:')
resolve(res)
},
})
})
},
getThreeMes(){
console.log('getOneMes three')
return new Promise((resolve, reject)=>{
url:'suggest.taobao/sug?code=utf-8&q=裤⼦&callback=cb', method:'GET',
dataType:'json',
success:function(res){
console.log('three:')
resolve(res)
},
})
})
},
async MyAsync(){
let one =OneMes()
console.log(one)
let two =TwoMes()
console.log(two)
let three =ThreeMes()
console.log(three)
},
onLoad:function(options){
this.MyAsync().then(()=>{
console.log('MyAsync')
})
},
})
8. 输出结果异步变同步如图结果:先执⾏的one,等one完全执⾏结束 然后是two,最后是three
本⽂内容借鉴的博客,推荐⼀下,⼤家相互学习
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论