美文网首页
JS----promise

JS----promise

作者: JuMinggniMuJ | 来源:发表于2020-10-09 17:30 被阅读0次

    Promise 对象代表了未来将要发生的事件,用来传递异步操作的消息
    Promise是ECMAscript 6 的一个新东西,它能提供链式操作能力和类似于try catch的代码处理能力

    1.基本使用:
    new Promise((resolve,reject){
        if(right){
            resolve('right_data')
        }else{
            reject('wrong_data')
        }
    }).then(value=>{
        right code
    }).catch(err=>{
        wrong code 
    })
    
    2.then方法:

    then方法有两个参数,是resolvereject的回调函数,但是大多情况下我们都都将它作为预期的resolve回调:

    new Promise((resolve,reject){
        some code  you want 
    }).then(value=>{
      right code 
    },err=>{
      wrong code
    })
    
    3.catch方法:

    catch方法和try catch的用法相似,当我们在Promise对象中调用reject()方法抛出异常(throw new Error(err_msg))或者语法错误的时候,并不会直接浏览器报错,而会在catch中接收,它相当于then()函数的第二个参数,但是会比then()函数的第二个回调函数更加强大一些

    new Promise((resolve,reject){
        some code  you want 
    }).catch(err=>{
        wrong code 
    })
    
    4.all方法:

    promise对象存在一个all方法,它用于同时执行多个函数,并且以执行最慢的函数执行回调,它的回调参数是它执行的多个函数返回的结果依次排列组成的数组,当有一个函数执行失败,那么就会直接调用catch方法:

    let function1()
    let function2()
    let function3()
    Promise.all([function1(),function2(),function3()]).then(value=>{
        //当三个函数都执行成功之后执行
            console.log(value)    //打印结果:[function1.res,  function2.res,  function3.res]
    }).catch(err=>{
        //只要有一个执行失败便回调
        wrong code
    })
    
    5.race方法:

    race()方法远比all()方法宽松的多,all()方法需要全部函数执行成功才能回调then()函数,race()方法是只要有一个函数执行成功便会回调then()函数,并且它的then()函数参数是执行成功的最快的那一个函数返回结果

    let function1()
    let function2()
    let function3()
    Promise.race([function1(),function2(),function3()]).then(value=>{
        //三个函数中只要有一个执行成功便会回调
            console.log(value)    //打印结果:first_success_function_res
    }).catch(err=>{
        //都没有执行成功才会回调
        wrong code
    })
    

    相关文章

      网友评论

          本文标题:JS----promise

          本文链接:https://www.haomeiwen.com/subject/ibnlpktx.html