当前位置:优学网  >  在线题库

关于Promise应用场景

发表时间:2022-06-20 15:39:35 阅读:229

抛开Promise.all race等不谈,只谈基本的用法

Promise用于有先后执行顺序的流程,这句话是否正确?

比如说,从后端请求数据到前端,必须有结果,才能执行then,
再比如说,一个场景,必须对a经过一系列处理之后,才能执行下一步操作,
这个应用场景是否正确?

let a = 1
const p = new Promise(resolve => {
     // 对a进行过一系列处理,才能进行进行下一步
     a++;
     resolve()
})
p().then(res => {
      // 再执行下一步操作
})
🎖️ 优质答案
  • Promise用于有先后执行顺序的流程,这句话是否正确?

    这是个病句,因为“流程”本身的释义就包含“先后的顺序”。
    改了病句之后,整体表达的意思没有错,但属于正确的废话,因为所有代码都适用于“先后执行顺序的流程”,因为所有流程都是“先后执行顺序的”。
    应该说,Promise提供了一种组织代码顺序的方法。

    Promise 是为了让处理包含异步过程的代码顺序看起来与该过程的顺序一致,并且可以减少回调函数的嵌套

    这里强调异步过程,是因为同步过程的代码天生就与过程一致,当然在同步过程使用 Promise 也并非不可,但完全就是多此一举。

  • Promise 对象用于表示一个异步操作的最终完成(或失败)及其结果值.本身就是一个有先后顺序的一个过程。存在三个状态:
    待定(pending):初始状态,既没有被兑现,也没有被拒绝。
    已兑现(fulfilled):意味着操作成功完成。
    已拒绝(rejected):意味着操作失败。
    待定状态的 Promise 对象要么会通过一个值被兑现,要么会通过一个原因(错误)被拒绝。当这些情况之一发生时,我们用 promise 的 then 方法排列起来的相关处理程序就会被调用。当 .then() 中缺少能够返回 promise 对象的函数时,链式调用就直接继续进行下一环操作。

    已参与了 SegmentFault 思否社区 10 周年「问答」打卡 ,欢迎正在阅读的你也加入。

  • 相关问题