时间:2019-05-03 来源:小程序工厂
m***:
还是读一下你自己写的 app.getUserInfo 代码吧,应该就清楚了。
阿***:
官方的SAMPLE代码。
还是不清楚什么原因。
能不能微信小程序和公众号的编辑器分开-微信小程序开发
m***:
这个函数内部是做了缓存的,第一次调用的时候,会去调用 wx.login/wx.getUserInfo 以获取数据,这是个异步过程,函数先返回,然后在将来的某个时间会在 success 里面调用传入的回调函数。第二次调用的时候,因为有了缓存,直接调用传入的回调函数,然后再返回。
阿***:
是js里这种调用wx.login的函数,里面的sucess或fail这类回调都是异步的,还是说只是微信小程序里实现这些回调都是异步的? 我是JS萌新,求教。
简单一点问就是:
问题1: 回调过程是异步的,能这样理解吗?
问题2:微信小程序的回调是异步的? 还是js的回调是异步的? 还是仅限于部分微信小程序接口里的回调是异步的?
我在官方API介绍里没有找到关于wx.login是异步的说明。
m***:
首先,是否异步,取决于函数的具体实现方式,比如 wx.login 和 wx.getUserInfo 就是异步的,而你的 app.getUserInfo 有时表现为异步、有时表现为同步。
其次,回调函数典型的应用场景就是用于接收异步操作的结果,但也不总是这样,比如 Array.forEach() 这个函数也是以一个回调函数为入口参数,但它是同步执行的。
微信小程序开发工具能同时打开多个项目吗##微信小程序开发教程 ...
阿***:
谢谢大牛!这种异步回调的接口,通常是类似fork一个子线程的方式去实现的吗? 还是JS中有什么方法可以实现定义回调函数为异步的?
我截图的那个 app.getUserInfo 里的例子应该确切的说是受 wx.getUserInfo 的回调 success 影响时可能会是异步的,而直接返回缓存中结果的是同步的方式,能这样理解的吧?
m***:
js 是单线程模型,所有的 js 代码都是在同一个线程里执行的,所以不用考虑线程间冲突之类的麻烦事儿。一般来说,都是因为涉及 IO 操作才会用到异步模式,如果你自己一定要用代码实现一个异步回调的效果的话,可以用 setTimeout()。
第二个问题,理解正确。
阿***:
谢谢解答,解决了我好几个疑惑!
可以下载源码吗?+微信小程序教程