2、then 、 catch 、 finally 都会返回一个新的promise, 所以可以链式调用。 在Promise中,返回任意一个非promise的值都会被包裹成promise对象, 例如return 'hehe'会被包装为return Promise.resolve('hehe')。 return 的值只会往下传给 then,无论中间是否有catch 或者 finally。 varpromise =newPromise((resolve, ...
看上去promise.prototype.then()和promise.prototype.finally似乎非常相似。但是你需要明白它们有一些重要的差异。 第一个也最明显的是finally()没有得到 promise 链的结果。由于finally()没有收到值,因此无法更改 promise 的已解决值。 代码语言:javascript 代码运行次数:0 运行 AI代码解释 newPromise((resolve,reject...
let p9 = p1.finally(() => new Promise(() => {})); let p10 = p1.finally(() => Promise.reject()); // Uncaught (in promise): undefined setTimeout(console.log, 0, p9); // Promise <pending> setTimeout(console.log, 0, p10); // Promise <rejected>: undefined let p11 = p1...
.finally()在撰写本文时,该功能尚未包含在任何Node.js版本中,但promise.prototype.finally在npm上的模块具有polyfill。上面的脚本将同时打印“已完成”和“已拒绝”,这是因为onFinally在实现promise时将调用处理程序,而不管promise是实现还是拒绝。然而,onFinally处理程序没有收到任何参数,所以你不能告诉的promise是否...
最近Promise.prototype.finally() 达到了TC39提案流程的第4阶段,这意味着其建议已被接受,并现已成为ECMAScript规范最新草案的一部分。由此看来,将其放入Node.js仅是时间问题。 本文将向您展示:如何使用Promise.prototype.finally()以及如何编写自己的简化polyfill。
Promise.finally() finally方法用于指定不管 Promise 对象最后状态如何,都会执行的操作。该方法是 ES2018 引入标准的。 代码语言:javascript 代码运行次数:0 运行 AI代码解释 constp=Promise.race([p3,p4]).then(res=>console.log(res)).catch(err=>console.log(err)).finally(()=>{console.log("finally的执行...
当前 .finally() 还没有加入 Node.js 发行版,但 npm 上的 promise.prototype.finally 模块 实现了它的 Polyfill。 const promiseFinally = require('promise.prototype.finally'); // 向 Promise.prototype 增加 finally() promiseFinally.shim(); const promiseThatFulfills = new Promise((resolve) => { set...
在线转换:es6console.com/,babeljs.io/repl 你是不是明白了什么,要这么写的原因是在于,finally其实并不一定是这个promise链的最后一环,相对而言,其实done才是。因为finally可能之后还有then和catch等等,所以其必须要返回一个promise对象。是不是瞬间秒懂。
我们都知道,.then, .catch, .finally都可以链式调用,其本质上是因为返回了一个新的Promise实例,而...
async function main() { const result = await someFunctionThatReturnsRejectedPromise(); if (result instanceof Error) { console.log('Error "caught" in main:', result.message); } }async function someFunctionThatReturnsRejectedPromise() { try { await new Promise((resolve, reject) => {...