uniapp同步方法的使用方法和注意事项

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 等同步方法时,请开发者特别注意各类可能会发生的问题,并认真处理,以确保自己的代码在运行时表现良好。