この解答例はChatGPTによって生成されています,正しいかは自己判断で。 皆の投稿からも解答例が見つかるかもしれませんよ。
BFE.devでのAI解答例 - JavaScript コーディング問題
123. Promise.prototype.finally() を実装する
以下は、Promise.prototype.finally()を実装したコードです。
Promise.prototype.finally = function(callback) {
return this.then(
// onFulfilled、onRejectedともにcallbackを実行し、結果をそのまま返却する
value => Promise.resolve(callback()).then(() => value),
reason => Promise.resolve(callback()).then(() => { throw reason })
);
};
このコードでは、Promise.prototype.finally()メソッドを定義しています。このメソッドは、Promiseオブジェクトに対して使用できるようにし、引数としてcallback関数を受け取ります。
このメソッドは、then()メソッドを利用して、プロミスがfulfilledまたはrejectedされた場合に引数のcallback関数を実行するようにしています。そして、callback関数自体は、返す値がなく、promiseのsettleされた値には影響を与えないようにしています。
以下は、このPromise.prototype.finally()メソッドを使用したサンプルコードです。
const promise = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('成功!');
}, 1000);
});
promise
.then(value => {
console.log(value);
return '変更された値';
})
.finally(() => {
console.log('finallyメソッドが実行されました');
})
.then(value => {
console.log(value);
});
このコードでは、Promiseオブジェクトを作成し、1秒後にresolveメソッドを呼び出しています。そして、その後に、then()メソッドでコールバック関数を実行し、"変更された値"を返すようにしています。さらに、finally()メソッドで、コールバック関数を実行しています。ここで、console.log()メソッドを使用して、「finallyメソッドが実行されました」というメッセージを表示しています。そして、最後に再びthen()メソッドでコールバック関数を実行し、"変更された値"が表示されることを確認しています。