先看一下代码 

let runPromise = () => {
    return Promise.resolve().then(() => {
        console.log(1)
    }).then(res => {
        console.log(2)
    }).then(() => {
        console.log(3)
    })
}

执行的结果

关于JS Pormise的认识

 

 也就是每个then后的方法不需要 return 就会按照顺序执行

let runPromise = () => {
    return Promise.resolve().then(() => {
        console.log(1)
        return {a: 1}
    }).then(res => {
        console.log(2, res)
    }).then(() => {
        console.log(3)
    })
}

执行结果

关于JS Pormise的认识

 

 如果有 return 则下一个then的方法回调中可以获得参数,当然可以必要时 return Promise.reject({message: ''}) 退出下面所有的 then

来看另一个案例

 1 let runPromise = () => {
 2     return Promise.resolve().then(() => {
 3         return new Promise((resolve, reject) => {
 4             console.log(1)
 5         })
 6     }).then(res => {
 7         console.log(2)
 8     }).then(() => {
 9         console.log(3)
10     })
11 }

执行结果

关于JS Pormise的认识

 

 一直处于pending状态

如果要向下执行代码修改为

 1 let runPromise = () => {
 2     return Promise.resolve().then(() => {
 3         return new Promise((resolve, reject) => {
 4             console.log(1)
 5             resolve()
 6         })
 7     }).then(res => {
 8         console.log(2)
 9     }).then(() => {
10         console.log(3)
11     })
12 }

所以,Promise的混合使用,需要根据不同的场景去优化。

 

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-01-23
  • 2021-05-11
  • 2021-12-16
  • 2021-11-22
  • 2021-08-27
  • 2021-06-30
猜你喜欢
  • 2021-11-30
  • 2021-06-01
  • 2021-07-24
  • 2021-12-20
  • 2022-03-01
  • 2021-11-21
  • 2021-09-27
相关资源
相似解决方案