Promise构造函数的静态方法
Static methods of Promise constructor
我正在检查 Promise 构造函数的静态方法。当我控制台记录 Promise 构造函数属性时,我看到 resolve 和 reject 方法:
console.log(Object.getOwnPropertyNames(Promise))
// Array(7) [ "all", "race", "reject", "resolve", "prototype", "length", "name" ]
我想知道这些 resolve 和 reject 方法是否与执行程序中用作其参数的方法相同,或者它们是不同的东西:
const myFirstPromise = new Promise((resolve, reject) => {
// do something asynchronous which eventually calls either:
//
// resolve(someValue); // fulfilled
// or
// reject("failure reason"); // rejected
});
规范提到了 Promise Resolve Functions 和 Promise.resolve ( x ),它是 %Promise_resolve% 内在对象。谁能告诉我这些是一样的吗?
Promise.resolve
是 "take a value or a promise and return it wrapped in a promise" 的快捷方式。 myPromise = Promise.resolve("myVal")
是
的缩写
myPromise = new Promise((resolve) => resolve("myVal"))
Promise.reject做同样的事情,只是明显拒绝而不是解决。
您在 console.log()
的输出中看到的属性是全局 JavaScript Promise
对象的 .resolve()
and .reject()
属性。您可以将它们视为 Promise
class.
的静态 class 方法
它们用于创建新的 Promise
对象,这些对象已经 resolved/rejected:
const p1 = Promise.resolve(3);
console.log(await p1);
// 3
您在调用中使用的promise
和reject
参数:
const myFirstPromise = new Promise((resolve, reject) => {
if (rand() < 0.5) {
resolve(3);
} else {
reject(new Error('not today'));
}
});
只是函数参数。它们可以随心所欲地命名;它们仅在您作为参数传递给 Promise
构造函数的执行程序函数中可见。
它们与 Promise.resolve()
和 Promise.reject()
.
没有任何联系或相关
上面的代码也可以写成:
const f1 = (resolve, reject) => {
if (rand() < 0.5) {
resolve(3);
} else {
reject(new Error('not today'));
}
};
const myFirstPromise = new Promise(f1);
这样更清楚 resolve
和 reject
与 myFirstPromise
或任何 Promise
没有任何关系。它们只是函数 f1
.
的局部变量
我正在检查 Promise 构造函数的静态方法。当我控制台记录 Promise 构造函数属性时,我看到 resolve 和 reject 方法:
console.log(Object.getOwnPropertyNames(Promise))
// Array(7) [ "all", "race", "reject", "resolve", "prototype", "length", "name" ]
我想知道这些 resolve 和 reject 方法是否与执行程序中用作其参数的方法相同,或者它们是不同的东西:
const myFirstPromise = new Promise((resolve, reject) => {
// do something asynchronous which eventually calls either:
//
// resolve(someValue); // fulfilled
// or
// reject("failure reason"); // rejected
});
规范提到了 Promise Resolve Functions 和 Promise.resolve ( x ),它是 %Promise_resolve% 内在对象。谁能告诉我这些是一样的吗?
Promise.resolve
是 "take a value or a promise and return it wrapped in a promise" 的快捷方式。 myPromise = Promise.resolve("myVal")
是
myPromise = new Promise((resolve) => resolve("myVal"))
Promise.reject做同样的事情,只是明显拒绝而不是解决。
您在 console.log()
的输出中看到的属性是全局 JavaScript Promise
对象的 .resolve()
and .reject()
属性。您可以将它们视为 Promise
class.
它们用于创建新的 Promise
对象,这些对象已经 resolved/rejected:
const p1 = Promise.resolve(3);
console.log(await p1);
// 3
您在调用中使用的promise
和reject
参数:
const myFirstPromise = new Promise((resolve, reject) => {
if (rand() < 0.5) {
resolve(3);
} else {
reject(new Error('not today'));
}
});
只是函数参数。它们可以随心所欲地命名;它们仅在您作为参数传递给 Promise
构造函数的执行程序函数中可见。
它们与 Promise.resolve()
和 Promise.reject()
.
上面的代码也可以写成:
const f1 = (resolve, reject) => {
if (rand() < 0.5) {
resolve(3);
} else {
reject(new Error('not today'));
}
};
const myFirstPromise = new Promise(f1);
这样更清楚 resolve
和 reject
与 myFirstPromise
或任何 Promise
没有任何关系。它们只是函数 f1
.