第一次写微信小程序,被异步坑死了,异步是哪个运行的快就先运行了, 运行慢的慢慢运行完,所以根本不能按照程序编写顺序一步步运行正确。
在网上找了好久介绍,Async-await,Promise什么的,弄不清楚具体怎么写,后来终于弄清楚了,按顺序运行的Promise模板格式其实很简单!原理抛开,引用抛开,没有var。如下:
//new Promise模板
new Promise((resolve, reject) => {
resolve(a)
}).then(res => {
})
模板之外不需要写另外的引用了,复杂的需要注意放resolve的位置,resolve表示传运行成功后的值a给then用。
例如云数据库数据一次只能查20个,需要循环查询再用concat拼合数组,但因为for异步,查询数据库总是慢的不一致,就导致按顺序查询出来的在拼合时乱了顺序,还需要全拼合完了再排序。因此需要用Promise确保查询完了,再resolve传递数组去排序。
上例提取可运行的代码片段展示太麻烦,就举个特简单的例子:
例如第一步是:
stepone: function() {
console.log('stepone')
this.setData({
a: true
}