javascript - Promise 构造函数是必要的还是可以避免?

标签 javascript promise es6-promise

根据Promise - Javascript | MDN ,

The constructor is primarily used to wrap functions that do not already support promises.

  1. 在较低级别,已经支持promises的函数将 这样做是否正确,即使用 Promise 构造一个 promise 并将其返回?
  2. 除了使用 Promise 构造函数之外,还有更好的方法来创建 promise 吗?
  3. 最终,您必须在某处注册回调,对吧?我的意思是你无法避免至少解析回调?换句话说,我们必须像这样将它包装在库中的某个位置,对吗?

最佳答案

  1. 处于最低级别?是的,可能是。
  2. 取决于上下文。如果您想要解析的值已经可用,那么您可以使用 Promise.resolve(theValue)。如果您想等待多个 Promise,您可以使用 Promise.all(allThePromises)。当然,每次调用 .then 都会返回一个新的 Promise。
  3. 如果您想对 Promise 的值执行任何操作,那么您必须将回调传递给 .then没有其他方法可以获取该值。

话虽如此,ES2017 introduced async functions它们基本上是 promise 的语法糖。 async 函数始终返回一个 Promise,您可以使用 await 来解开 Promise。示例:

async function get() {
  return await Promise.resolve(42);
}

get().then(console.log);

关于javascript - Promise 构造函数是必要的还是可以避免?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46716161/

相关文章:

javascript - 未捕获的 TypeError : XXX. 那么不是一个函数

javascript - 如何将这个延迟风格的 promise 转换为 ES6 风格的 promise

javascript - 想要阻止默认打开下拉菜单

javascript - Jquery - 为什么我无法在 $.ajax 中访问/设置我的 var

javascript - 删除两个字符串内的文本

node.js - 如果使用 Promise 存在对象,则 AWS 签名 url

javascript - Promise 返回 undefined

javascript - ES6 promise : how to chain functions with arguments

javascript - 联系表单响应非常慢(PHP/jQuery/Ajax)

javascript - 我如何用 Promise 重构这个回调 hell ?