[etc] Promise.すべてをまとめる
4739 ワード
async/awaitの使い方
プミスを順番に受け入れる.
await ofの使用
以下の間違いは私を歓迎します.うん.
Uncaught SyntaxError: Unexpected reserved word await
何だよこの詩は特別だ...nodeもブラウザにアップロードもできません
代替案はPromiseです.all
mozilla公式サイトを参照してください.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/all
そうだ...
いくつかのプロミスを組み合わせてみましょう.
一つだけ失敗してもcatch!!
成功ログではなく、失敗ログが表示されます.
IE以外のブラウザドライバOK~
var p1 = () =>{
console.log("one 진입");
return new Promise((resolve, reject) => {
setTimeout(() => resolve('one'), 3000);
});
}
var p2 = () =>{
console.log("two 진입");
return new Promise((resolve, reject) => {
setTimeout(() => resolve('two'), 1000);
});
}
var p3 = () =>{
console.log("three 진입");
return new Promise((resolve, reject) => {
setTimeout(() => resolve('three'), 7000);
});
}
var p4 = () =>{
console.log("four 진입");
return new Promise((resolve, reject) => {
setTimeout(() => resolve('four'), 1000);
});
}
var p5 = () =>{
console.log("five 진입");
return new Promise((resolve, reject) => {
setTimeout(() => resolve('five'), 3000);
// reject(new Error('reject'));
});
}
var execute = async () => {
console.log(await p1());
console.log(await p2());
console.log(await p3());
console.log(await p4());
console.log(await p5());
console.log("All done!!");
}
execute();
結果.プミスを順番に受け入れる.
one 진입
one
two 진입
two
three 진입
three
four 진입
four
five 진입
five
All done!!
でも….シーケンス処理を必要としないプロセスを作成したいですか?await ofの使用
以下の間違いは私を歓迎します.うん.
Uncaught SyntaxError: Unexpected reserved word await
何だよこの詩は特別だ...nodeもブラウザにアップロードもできません
代替案はPromiseです.all
mozilla公式サイトを参照してください.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/all
そうだ...
いくつかのプロミスを組み合わせてみましょう.
var p1 = new Promise((resolve, reject) => {
console.log("one 진입");
setTimeout(() => { console.log(`one 끝`); return resolve('one') }, 3000);
});
var p2 = new Promise((resolve, reject) => {
console.log("two 진입");
setTimeout(() => { console.log(`two 끝`); return resolve('two') }, 1000);
});
var p3 = new Promise((resolve, reject) => {
console.log("three 진입");
setTimeout(() => { console.log(`three 끝`); return resolve('three') }, 7000);
});
var p4 = new Promise((resolve, reject) => {
console.log("four 진입");
setTimeout(() => { console.log(`four 끝`); return resolve('four') }, 1000);
});
var p5 = new Promise((resolve, reject) => {
console.log("five 진입");
setTimeout(() => { console.log(`five 끝`); return resolve('five') }, 3000);
//reject(new Error('reject'));
});
// Using .catch:
Promise.all([p1, p2, p3, p4, p5]).then(values => {
console.log(values);
}).catch(error => {
console.error(error.message)
});
結果one 진입
two 진입
three 진입
four 진입
five 진입
two 끝
four 끝
one 끝
five 끝
three 끝
[ 'one', 'two', 'three', 'four', 'five' ]
Promise.allは、開始順に、すべてのタスクが開始してから終了する順に通知し、すべてのタスクが終了する時間を決定することもできます.一つだけ失敗してもcatch!!
var p1 = new Promise((resolve, reject) => {
console.log("one 진입");
setTimeout(() => { console.log(`one 끝`); return resolve('one') }, 3000);
});
var p2 = new Promise((resolve, reject) => {
console.log("two 진입");
setTimeout(() => { console.log(`two 끝`); return resolve('two') }, 1000);
});
var p3 = new Promise((resolve, reject) => {
console.log("three 진입");
setTimeout(() => { console.log(`three 끝`); return resolve('three') }, 7000);
});
var p4 = new Promise((resolve, reject) => {
console.log("four 진입");
setTimeout(() => { console.log(`four 끝`); return resolve('four') }, 1000);
});
var p5 = new Promise((resolve, reject) => {
console.log("five 에러");
setTimeout(() => { console.log(`five 끝`); return reject(new Error('reject')); }, 3000);
//reject(new Error('reject'));
});
// Using .catch:
Promise.all([p1, p2, p3, p4, p5])
.then(values => {
console.log(values);
})
.catch(error => {
console.error(error.message)
});
失敗の結果:成功ログではなく、失敗ログが表示されます.
one 진입
two 진입
three 진입
four 진입
five 에러
two 끝
four 끝
one 끝
five 끝
reject
three 끝 -- 이거 왜나온거지;
これはリモートトランザクションなどのタスクには向いていないようですが、いくつかの場所で役に立つでしょう...IE以外のブラウザドライバOK~
Reference
この問題について([etc] Promise.すべてをまとめる), 我々は、より多くの情報をここで見つけました https://velog.io/@exoluse/etc-Promise.all-정리テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol