Promise
8875 ワード
なぜPromiseを使うのですか?😍(南で確認)
例えば、F 1→F 2→F 3構造のコールバック関数.
F 1は処理を完了し、F 2はコールバックとして動作している.
F 2の関数に問題がある場合、F 2の問題はプログラムのフリーズまたは無限のブロックを引き起こす.
この構成では、F 3は、すべてのコールバックを終了してレンダリングする論理を含むことができるからである.
F 2の関数がブロックされている場合、F 3は実行されません.
これは信頼できるエラー処理が必要です.
ただし、F 1、F 2、F 3のすべてのエラーを処理するには、tryとcatchをそれぞれ関数にバインドする必要があります.
F 1で試す
F 2で試す
F 3のtry
これらはすべて異なるスクリプトを作成する必要があります
さらに、モジュール化関数の場合はさらに悪化します.毒性もあまりよくない.
承諾を使用してこの問題を解決
非同期処理のコールバックセットである承諾オブジェクトを作成して使用します.
このグループで発生したすべてのエラーを食べることで、簡単に処理できます.毒性もいいです.
南で説明を追加する
コールバックとの比較 const Todo = mongoose.model('Todo', todoSchema);
// callback style
Todo.find({ }, function(err, todo) {
if(err) throw err;
console.log(todo);
});
// promise style
Todo.find({})
.then(todo => console.log(todo))
.catch(err => console.log(err))
Test Code
Promise.all([
new Promise((resolve) => {
setTimeout(() => {
console.log("1");
resolve(1);
}, 3000);
}), // 1
new Promise((resolve) => {
setTimeout(() => {
console.log("2");
resolve(2);
}, 2000);
}), // 2
new Promise((resolve) => {
setTimeout(() => {
console.log("3");
resolve(3);
}, 1000);
}), // 3
])
.then(console.log) // [ 1, 2, 3 ]
.catch(console.log);
Reference
この問題について(Promise), 我々は、より多くの情報をここで見つけました
https://velog.io/@ruddms936/Promise
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
const Todo = mongoose.model('Todo', todoSchema);
// callback style
Todo.find({ }, function(err, todo) {
if(err) throw err;
console.log(todo);
});
// promise style
Todo.find({})
.then(todo => console.log(todo))
.catch(err => console.log(err))
Promise.all([
new Promise((resolve) => {
setTimeout(() => {
console.log("1");
resolve(1);
}, 3000);
}), // 1
new Promise((resolve) => {
setTimeout(() => {
console.log("2");
resolve(2);
}, 2000);
}), // 2
new Promise((resolve) => {
setTimeout(() => {
console.log("3");
resolve(3);
}, 1000);
}), // 3
])
.then(console.log) // [ 1, 2, 3 ]
.catch(console.log);
Reference
この問題について(Promise), 我々は、より多くの情報をここで見つけました https://velog.io/@ruddms936/Promiseテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol