使用Promise来解决异步操作问题
// 在方法中定义Promise function test01() { return new Promise((resolve,reject) => { //里面可以添加任意方法,不一定是请求 setTimeout(function(){ flag = false if(flag){ receive('成功'); // 改变Promise的状态将Promise对象的状态从“未完成”变为“成功” }else{ reject('出错了'); // 改变Promise的状态将Promise对象的状态从“未完成”变为“失败” } },1000) }); } function test02() { return new Promise((resolve,reject) => { setTimeout(function(){ flag = false if(flag){ receive('成功'); }else{ reject('出错了'); } },1000) }); }使用then()
// 在调用方法时: // 当方法test01执行完毕才会在执行方法test02,异步方法顺序调用 // then()返回一个新的Promise实例,所以它可以链式调用 this.test01().then(()=>{ return this.test02() }).then(()=>{ return this.test03() }).then(()=>{ return this.test04() }).then(()=>{ return this.test05() }) //注意 this.test01().then(()=>{ this.test02().then(()=>{ // 会等里面的then()执行完,再执行外面的 }) })使用async,await来实现异步的顺序执行
let that=this async function test(){ await that.test01() await that.test02() // 放在具体异步方法前面,等待该异步返回Promise才会继续后面的操作 } test() // 调用该方法