Promise的简单应用(微信小程序版)-解决异步嵌套调用
一、定义一个promise工具类(Promise.js)
//封装request请求
const request=function(url,method,params){
return new Promise(function(resolve,reject){
wx.request({
url: url,
data:params,
method:method
success:function(res){
if(res.data.status==200){
return resolve(res);
}else{
reject(res);
}
},
fail:function(erro){
reject(erro)
}
})
})
}
module.exports={
request
}
二、导入到使用的文件,并调用
const { taskList } = require("../../utils/config.js");
const config=require("../../utils/config.js");
const promise=require("../../utils/Promise.js")
const app = getApp();
Page({
data: {},
getDato(){
let that=this
let params={
pageNo:that.data.pageNo,
pageSize:that.data.pageSize,
taskId:"",
taskName:"",
taskUsrId:"",
taskSts:"1"
}
//第一次请求
promise.request(config.url+config.taskList,'GET',params).then(function(res){
//第一次请求结果
console.log("promise结果是",res)
//第二次请求
return promise.request(config.url+config.taskList,params)
}).then(function(res){
//第二次请求结果
console.log("对了吗",res)
//若还有请求继续return一个promise对象,并在后面调用then方法
})
},
onShow() {
let that=this;
that.getDato()
}
})
三、实际效果
可以看到两个请求都成功了,这里两次请求用的是同一个接口,可以换成不同的接口试试。
四、验证
当将第一次请求的config.taskList后再拼接上一个任意字符使请求报错,那么第二次请求也不会执行,同微信小程序的回调函数效果一致