js语法---简单理解promise

promise语法结构

创建一个promise对象

let p = new Promise(function(resolve,reject){
    // 执行的操作
    ...
    // 判断操作的结果并执行对应的回调函数
    if(){
        resolve()
    }else{
        reject()
    }
}

        以上实例化了一个promise对象,其中包含了一个参数function,这个函数会在p实例化时立刻执行,这是同步的,它有两个参数回调resolve和reject (关于回调函数可以参考---js回调函数callback),分别表示操作成功操作失败两种状态,它们同属于执行完成的状态

 promise 对象具有以下内部属性:

  • state —— 最初是 "pending"(待执行),然后在 resolve 被调用时变为 "fulfilled"(成功执行),或者在 reject 被调用时变为 "rejected"(失败执行)
  • result —— 最初是 undefined,然后在 resolve(value) 被调用时变为 value,或者在 reject(error) 被调用时变为 error

这两个内部属性不可被直接修改,属于私有量。

同时它还有拥有2个实例化方法,then()和catch(),

then()

// 异步返回结果
p.then(()=>{
    // p成功执行
    console.log("success",p);
},()=>{
    // p失败执行
    console.log("fail",p);
})

第一个回调是成功时执行,第二个回调是失败时执行,

catch()

// 异步返回结果
p.catch(()=>{
    // p失败执行
    console.log("fail",p);
})

只有一个回调捕获失败的情况执行,catch(f) 与 then(null, f) 一样

两种方法均在promise被设置,且状态是被执行 才会触发,这是异步的

一个promise的实例

function getData(b) {  
    if(b){
        return true;
    }else{
        return false;
    }
}
let p = new Promise(function(resolve,reject){
    //执行一个操作
    let data;
    setTimeout(()=>{
        console.log("promise执行中...");
        data = getData(1);
        if(data){// 是否拿到数据
        resolve("成功") // 成功,返回成功信号
    }else{
        reject("失败") // 失败,返回失败信号
    }
    },1000);
});
// 异步返回结果
p.then(()=>{
    // p成功执行
    console.log("success",p);
},()=>{
    // p失败执行
    console.log("fail",p);
})

console.log("模拟获取数据...");

得到结果如下

小结

        promise是一个对象,它包含了一个操作和这个操作的执行状态,它可以根据操作的执行状态(成功和失败)执行对应的方法,而这个过程是异步的,它会等待操作的执行返回结果

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值