接收参数的JavaScript Promise.prototype.finally()

接收参数的JavaScript Promise.prototype.finally(),javascript,node.js,promise,try-catch-finally,Javascript,Node.js,Promise,Try Catch Finally,为什么不接收任何参数 文件说: finally回调不会收到任何参数,因为没有 确定承诺是否履行的可靠手段 拒绝。这个用例正好适用于您不关心的情况 拒绝原因,或履行价值,因此没有必要 提供 但是,我可以向Promise原型添加一个简单的方法,将其命名为finally2(Promise.prototype.finally2),该方法可以接收结果,并可以可靠地确定承诺是否得到履行或拒绝 Promise.prototype.finally2 = function(callback){ retur

为什么不接收任何参数

文件说:

finally回调不会收到任何参数,因为没有 确定承诺是否履行的可靠手段 拒绝。这个用例正好适用于您不关心的情况 拒绝原因,或履行价值,因此没有必要 提供

但是,我可以向Promise原型添加一个简单的方法,将其命名为finally2
Promise.prototype.finally2
),该方法可以接收结果,并可以可靠地确定承诺是否得到履行或拒绝

Promise.prototype.finally2 = function(callback){
    return this.then(result => callback(result), result => callback(undefined, result));
}
我理解(如文档所述)
Promise.prototype.finally
的用例正是您不关心拒绝原因或实现价值的时候

我的问题是:
promise.prototype.finally
中确定承诺是履行了还是拒绝了,这怎么不可靠?

Promise.prototype.finally2=函数(回调){
返回这个。然后(result=>callback(result),result=>callback(undefined,result));
}
Promise.resolve(2.finally)(…args)=>console.log('finally:resolve=>',args));
Promise.reject(2.finally)(…args)=>console.log('finally:reject=>',args));
Promise.resolve(2.finally2)((…args)=>console.log('finally2:resolve=>',args));

Promise.reject(2.finally2)((…args)=>console.log('finally2:reject=>',args))坦率地说,如果你想在它被实现时以一种特定的方式行事,那么就使用
.then()
,如果它被拒绝,就使用
.catch()
。只有当你不需要知道的时候,才使用
.finally()
,你只想知道承诺已经完成,不管它以何种方式完成。我认为作者可能还想阻止人们在finally中放入只解析代码或只拒绝代码,因为它不属于finally。请注意,
.finally()
的返回值的行为不同于
.then()
.catch()
。这是为了一个完全不同的目的。而且,仅仅因为你可以创建自己的
.finally2()
hack并不意味着用这种方式编写代码是个好主意。另外,您的
.finally2()
没有遵循
.finally()
规范来保证它返回。请记住,
.finally()
中的代码不会影响
.finally()
调用返回的承诺的已解析/拒绝值。在父承诺发生了什么事之前,
.finally()
处理程序已经确定了这一点。@jfriend00您的参数是正确的,因为它是合理的,但它没有回答问题。。。并不是所有关于StackOverflow的问题都是
错误
不起作用的问题
。。。有些是为了学习。。。我想学习。。。为了清楚起见,我的问题是:如何确定在“代码>承诺”原型中承诺是否被满足或拒绝。最后,?我看它的方式,考虑<代码>。然后,<代码>回调,和<代码>。catch < /Cord>回调接收一个参数-遵循此模式,如果
.finally
callback收到一个参数,你怎么知道承诺是实现了还是被拒绝了?@McKabue-我甚至不确定它是否不可靠-只是不可取(从编码和设计的角度来看)。这只是写在MDN上的东西。这是一个由社区编辑的开发者网站,并不总是绝对正确的。对于“为什么”没有给出一个论点,真正的答案在于参与
.finally()
设计的开发人员的头脑。在一些标准的正文邮件列表的历史中,可能有关于这种设计的闲谈。