关于Promise应用场景

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

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

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

let a = 1
const p = new Promise(resolve => {
     // 对a进行过一系列处理,才能进行进行下一步
     a++;
     resolve()
})
p().then(res => {
      // 再执行下一步操作
})
阅读 1.6k
2 个回答

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

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

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

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

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

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题