bindTest 是按钮触发事件,我按两下打印的LOG如下(第1次按和第2次按,打印的顺序不一致???):
谢谢大牛!这种异步回调的接口,通常是类似fork一个子线程的方式去实现的吗? 还是JS中有什么方法可以实现定义回调函数为异步的?
我截图的那个 app.getUserInfo 里的例子应该确切的说是受 wx.getUserInfo 的回调 success 影响时可能会是异步的,而直接返回缓存中结果的是同步的方式,能这样理解的吧?
首先,是否异步,取决于函数的具体实现方式,比如 wx.login 和 wx.getUserInfo 就是异步的,而你的 app.getUserInfo 有时表现为异步、有时表现为同步。
其次,回调函数典型的应用场景就是用于接收异步操作的结果,但也不总是这样,比如 Array.forEach() 这个函数也是以一个回调函数为入口参数,但它是同步执行的。
js 是单线程模型,所有的 js 代码都是在同一个线程里执行的,所以不用考虑线程间冲突之类的麻烦事儿。一般来说,都是因为涉及 IO 操作才会用到异步模式,如果你自己一定要用代码实现一个异步回调的效果的话,可以用 setTimeout()。
第二个问题,理解正确。
是js里这种调用wx.login的函数,里面的sucess或fail这类回调都是异步的,还是说只是微信小程序里实现这些回调都是异步的? 我是JS萌新,求教。
简单一点问就是:
问题1: 回调过程是异步的,能这样理解吗?
问题2:微信小程序的回调是异步的? 还是js的回调是异步的? 还是仅限于部分微信小程序接口里的回调是异步的?
我在官方API介绍里没有找到关于wx.login是异步的说明。