1. uniapp同步方法介绍
uniapp是一款开发跨平台应用的框架,其中同步方法是其中一种方法之一。同步方法是指在一个执行区间内,保证当前线程执行完同步方法后,再执行下一个线程。在uniapp中,同步方法指的是以uni为前缀的同步方法。这些方法可以在任何 JavaScript 运行环境中使用。比如在 vue 文件中的 script, html, stylus 等中。
1.1 uni.sync方法
uni.sync方法可以将异步的js调用,转换成同步。可以使用uni.sync作为Vue的计算属性等需要等待异步处理结果的场景。
const response = uni.sync.request({
url: 'http://www.example.com/api/user',
method: 'GET'
});
const data = response.data;
此代码意思是调用接口请求,并等待结果,和常规接口请求的异步调用写法不同
1.2 uni.requestSyns方法
uni.requestSyns方法是一个 uni.sync 的别名,方便在旧的代码中进行替换,支持 JSONP, GET, POST, PUT, DELETE 等请求方法。uni.requestSyns的Promise是同步返回,说明网络请求已完成,如果请求成功则code值为200,如果失败则返回404。 uniapp执行requestSyns和其他sdk耗时操作,建议放在setTimeout()
异步队列中进行处理,在框架源码里面,祖册一些异步方法无耗时的,vueNextTick
就是这样的方法。
const response = uni.requestSyns({
url: 'http://www.example.com/api/user?name=${name}',
method: 'GET'
});
const data = response.data;
此代码会调用接口请求,并且等待结果
2. uniapp同步方法的使用方法
2.1 同步执行
有时候我们需要在执行异步的请求时同步地等待请求的结果返回,这时就可以使用 uni-sync 方法来让代码进行同步执行操作,实现上已经讲过。
2.2 异步执行
异步执行是代码中更常见的操作,使用 uni.sync 方法等会阻塞主线程,因为你在主线程中的代码执行了异步的调用,然后它再等待这个异步结果返回,如果时间过长就会阻塞主线程使得应用变得不够流畅。
3. uniapp同步方法的注意事项
3.1 风险
请注意,在使用 uni.sync 的时候要确保你的线程环境时单一的,并且要等待异步结果的其他代码要清楚线程的状态,否则使用 uni.sync 很容易造成线程死锁 ,开发者一定要在使用 uni.sync 时特别注意,确认自己的应用环境是否适合使用同步方法。
3.2 其他注意事项
使用 uni.sync 方法进行异步操作也需要注意如下事项:
避免死循环:同步操作中是非常容易造成死循环的,一定要注意。
标记耗时函数,将耗时函数放入setTimeout异步执行,以避免 ui 资源被阻塞。
处理好错误:同步操作与错误处理也很紧密相关,因为同步操作中保证自己的同步请求肯定是成功的,因此可能会让忽略某些可能会发生的错误,这时应该特别注意错误处理。
4. 总结
通过本文的介绍,我们对 uniapp 同步方法有了一定的了解。同步方法虽然方便开发者实现异步等待操作,但是一但使用不当,就会带来线程死锁等严重问题。因此在使用 uni.sync 等同步方法时,请开发者特别注意各类可能会发生的问题,并认真处理,以确保自己的代码在运行时表现良好。