跳至主要內容

promise

chanchaw小于 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);
})