【问题标题】:Javascript Promise: is the method name for resolve and reject arbitrary?Javascript Promise:resolve和reject的方法名称是任意的吗?
【发布时间】:2022-02-17 12:17:57
【问题描述】:

我对@9​​87654321@、ResolveRejectthencatch 的概念感到困惑。

虽然我知道如何编写有效的代码,但我想澄清一些问题:

问题 1: 关于ResolveRejectthencatch,这些方法都是和Promise一起介绍的吗?在Promise被引入Javascript之前,Javascript是不是已经有了这些特殊的方法?

问题 2: 在 Promise 中作为参数传递给执行器函数的方法名称 resolve, reject 是任意的吗? 例如:

const executorFunction = (resolve, reject) => {
  if ('1' === '1') {
      resolve('I resolved!');
  } else {
      reject('I rejected!'); 
  }
}
const myFirstPromise = new Promise(executorFunction);

上面的代码运行良好,没有语法错误或任何东西。承诺将处于履行状态,具有'I resolved!' 值。但如果我这样做:

const executorFunction = (A, B) => {
  if ('1' === '1') {
      A('I resolved!');
  } else {
      B('I rejected!'); 
  }
}
const myFirstPromise = new Promise(executorFunction);

它还能用吗?具有'I resolved!' 值的promise 是否仍处于已履行状态?

为了更进一步,如果我交换方法名称:

const executorFunction = (reject, resolve) => {
  if ('1' === '1') {
      reject('I resolved!');
  } else {
      resolve('I rejected!'); 
  }
}
const myFirstPromise = new Promise(executorFunction);

现在,这行得通吗?具有'I resolved!' 值的promise 是否仍处于已履行状态?

【问题讨论】:

  • Will the promise still be in fulfilled state with 'I resolved!' value? 自己测试这个很容易 - 不像你可以破坏任何东西:p

标签: javascript promise


【解决方案1】:
  1. Promise 是使用 Javascript 的 included 的对象规范。在 Promise 作为 Javascript 的一部分包含之前,可以通过代码构建相同的规范。
  2. Executor 函数是一个函数。因此,调用什么参数并不重要,只关心它们的顺序。

【讨论】:

    猜你喜欢
    • 2012-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-23
    • 2019-10-01
    • 2018-07-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多