[英]What does resolve and reject actually do in Javascript Promise
起初,我认为resolve
只是将参数传递给then
的函数,所以我尝试了这个
const promise = new Promise((resolve, reject) => {
resolve(new Promise(resolve => resolve(2333)))
})
// promise.then(innerPromise => {
// innerPromise.then(num => console.log(num))
// })
promise.then(num => console.log(num))
注释的行有一个错误: innerPromise.then is not a function
,所以我认为如果你有一个承诺作为参数, resolve
将首先帮助你处理内部的承诺
所以我尝试了reject
,我认为它会是一样的
const promise = new Promise((resolve, reject) => {
reject(new Promise(resolve => resolve(2333)))
})
promise.then(null, innerPromise => {
innerPromise.then(num => console.log(num))
})
// promise.then(null, num => console.log(num))
未注释的行将记录2333
,注释的行将仅记录被拒绝的Promise
实例
Resolve 是一个回调函数,用于返回另一个 promise 的值或结果。
因此,当您在第一个块中执行以下代码时:
const promise = new Promise((resolve, reject) => {
resolve(new Promise(resolve => resolve(2333)))
})
promise.then(innerPromise => {
console.log(innerPromise)
// innerPromise.then(num => console.log(num))
})
promise.then(num => console.log(num))
你会发现内部函数是由Resolve自动执行的,从而得到resolve内部函数的最终结果。 其次,明确提到“解决”返回“值”而不是可调用对象。 因此,您不能像调用函数那样调用 promise 的结果。
在拒绝的情况下,拒绝回调用于拒绝具有提供的原因或错误的承诺。 您可以返回任何语句(表示错误)或从错误代码返回错误消息的可调用对象。 (这就是我使用 Reject 从生成的错误代码中获取消息的方式)
好吧,你可以在这里阅读更多内容: https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise
根据定义,resolve can take value 和 thenable value。 如果 thenable 值,它将解析并返回状态。 但是,拒绝仅作为值。 即使重视它承诺(thenable)。 它不会解决它。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/resolve
由这个 Promise 解决的参数。 也可以是 Promise 或 thenable to resolve
Promise.resolve() 方法返回一个使用给定值解析的 Promise 对象。 如果值是一个promise,则返回该promise; 如果值是 thenable(即有一个“then”方法),则返回的 promise 将“跟随”那个 thenable,采用它的最终状态; 否则返回的承诺将用该值实现。 该函数将嵌套的类承诺对象层(例如,解析为解析为某事的承诺的承诺)扁平化为单个层。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/reject
Promise.reject() 方法返回一个因给定原因被拒绝的 Promise 对象。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.