promise
小于 1 分钟javascript
特性
return 时机
在调用 resolve 或者 reject 都不会退出当前 Promise 的流程,需要使用 return 退出。例如下面代码在调用 reject 后需要使用 return 退出本函数(中断执行之后的代码),同样的在调用 resolve 之后控制台中会打印出提示文案
function getRepairMain8Id$(repairMainId){
return new Promise((resolve, reject) => {
$.ajax({
url: `../../showabe/repairMain/select/${repairMainId}`,
type: 'POST', dataType: 'json',
contentType: "application/json;charset=UTF-8",
success: function (res) {// ResponseResult<RepairMain>
const { code, msg, data } = res;
if(code !== 1){
reject(data)
return
}
resolve(data);
console.log('后端响应了数据,在本文案之前已经resolve');
},
failed: function(err){
console.log(`请求主键${repairMainId}的维修记录时出现异常:${JSON.stringify(err)}`)
reject();
}
})
})
}
案例
var prom = new Promise(function(resolve,reject){
$.ajax({
type: "get",
url: "https://www.jzy.world/wxbe/wechat/test",
success: function (res){
// 后端响应来的结果,传递给 resolve 后面的 then 就可以使用了
// 在 then 的回调函数中继续逻辑业务处理数据
resolve(res);
},
error: err => {
reject(err);
}
complete: () => {}
});
});
// 也可以使用链式写法将下面的 then 拼接到上面代码的后面
prom.then( res => {
console.log("请求成功:",res);
}).catch( e => {
console.log("请求被拒绝:",e);
})
