转换任何其他回调 API

为了将任何回调 API 转换为承诺,假设 promisifypromisifyAll 版本不适合 - 你可以使用 promise 构造函数

创建承诺通常意味着指定它们何时结算 - 这意味着它们何时转移到已完成(已完成)或拒绝(错误)阶段以指示数据可用(并且可以使用 .then 访问)。

new Promise((fulfill, reject) => { // call fulfill/reject to mark the promise
   someCallbackFunction((data) => {
      fulfill(data); // we mark it as completed with the value
   })
});

举个例子,让我们将 setTimeout 转换为使用 promises:

function delay(ms) { // our delay function that resolves after ms milliseconds
  return new Promise((resolve, reject) => { // return a new promise
    setTimeout(resolve, ms); // resolve it after `ms` milliseconds have passed
  })
}
// or more concisely:
const delay = ms => new Promise(r => setTimeout(r, ms));

我们现在可以像常规的 promise 返回函数一样使用它:

delay(1000).then(() => console.log("One second passed")).
            then(() => delay(1000)).
            then(() => console.log("Another second passed"));