备案网站建设方案书模板,网站里面的图片做桌面不清晰,北京网站建设网络推广公司,网页动画文章目录 问题描述async什么是 asyncasync 的作用async 的应用场景async 优点 await什么是 awaitawait 的作用await 的应用场景await 的优点async和 await结合使用 结束语 大家好#xff01;又到了愉快的周末假期#xff0c;今天是2023年9月3日|农历七月十九#xff0c;我最… 文章目录 问题描述async什么是 asyncasync 的作用async 的应用场景async 优点 await什么是 awaitawait 的作用await 的应用场景await 的优点async和 await结合使用 结束语 大家好又到了愉快的周末假期今天是2023年9月3日|农历七月十九我最近还是比较忙的但是觉得每一天过得也比较充实无论在工作中遇到的技术难点还是在生活中的点点滴滴。 本篇博文是我发布的第100篇文章在上周收获了第一批粉丝(〃‘▽’〃)这次主要是来说一下在项目实战中如何处理异步之间的函数调用下面以文字解答源码的方式一一分享给大家。 问题描述 本次异步调用实现方式我是运用到了微信小程序中我有两个函数举例说一下函数A和函数B函数A去调用数据库返回id然后函数B拿着这个id再次去查询数据没使用异步之前我的做法是在onLoad或onShow中先调用函数A在调佣函数B我发现了一个问题函数A中id打印出来时null而且是在调用完函数B之后才打印出来的这明显不符合我的应用场景我的应用场景是必须在调用函数B之前把id查询到因为id是作为函数B查询数据库的查询条件后来我采用async和await 进行解决的具体解决思路如下 async
先来简答了解一下async.
什么是 async async是一个关键字用于定义异步函数. async 的作用 简化异步编程. async 的应用场景
异步操作当有需要处理异步操作的时候如异步请求、文件读写等。顺序控制当需要按照一定的顺序执行多个异步操作时可以使用await关键字确保异步操作的顺序性避免回调地狱和复杂的Promise链式调用。错误处理async/await结合try/catch语句可以更方便地处理异步操作中的错误使错误处理代码更加清晰和直观。
async 优点
简化了异步编程并提供了更直观、更易于理解和编写的方式来处理异步操作。适用于需要处理异步操作的场景以及对代码的简洁性、可读性和可维护性有要求的场景下。
await
先来简答了解一下await .
什么是 await await 是一个操作符用于等待一个Promise对象的解决resolved并暂停当前异步函数的执行直到Promise对象被解决并返回解决值。 await 的作用 使异步操作的代码看起来更像是同步的. await 的应用场景 使用await时它会暂停当前函数的执行直到等待的Promise对象被解决。一旦Promise对象被解决await表达式将返回Promise对象的解决值并继续执行后面的代码。 await 的优点
顺序控制await关键字可以确保异步操作按照预期的顺序执行。当一个异步操作需要依赖于另一个异步操作的结果时可以用await等待前一个操作完成然后进行后续操作。这样可以避免回调地狱和嵌套的.then()方法调用。简化异步代码await关键字使异步代码更易于理解和编写尤其是在处理多个异步操作时。它可以使异步代码的结构更加线性类似于同步代码从而提高代码的可读性和可维护性。
async和 await结合使用
修改前 onShow()页面加载渲染时调用此函数.
onShow() {this.loaddata();// 相当于我前面举例说明的函数Athis.getguardfamilyList();// 相当于我前面举例说明的函数B
}loaddata() 函数在调用getguardfamilyList()之前我输出来的this.modelvalue.id是undefined后端是有值的调用完getguardfamilyList()之后才有值。
loaddata(){get(后端接口地址,{id:uni.getStorageSync(values).id}).then(res{this.modelvalue res.resultconsole.log(this.modelvalue.id,this.modelvalue.id)})
},我在getguardfamilyList()中输出的modelvalue.id是undefined.
getguardfamilyList() {let modelvaluethis.modelvalueconsole.log(modelvalue.id,modelvalue.id)get(后端接口地址,model).then((res) {if (res.success) {this.shouhuquanjia res.result}}})
},修改后 在调用loaddata()的函数中添加async 将onShow()定义为异步函数.
async onShow() {await this.loaddata();// 相当于我前面举例说明的函数Athis.getguardfamilyList();// 相当于我前面举例说明的函数B
}在loaddata()函数前面加上async 关键字定义为异步函数并在get函数中添加await关键字表示我在执行get查询数据库时暂停其它函数执行直到后端返回结果后再接着往下执行我原来的执行逻辑是在loaddata()去请求后端时结果还没有返回getguardfamilyList()就已经被执行了.
async loaddata(){await get(后端接口地址,{id:uni.getStorageSync(values).id}).then(res{this.modelvalue res.resultconsole.log(this.modelvalue.id,this.modelvalue.id)})
},结束语 这就是我遇到的问题及解决方案希望本篇博文可以解决你遇到的问题如果有不明白的博主或者你也遇到了类似的问题私信我我会一一为你进行解答不收取任何费用欢迎打扰哦~