0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【メモ】Async・Await・Promiseについて

Posted at

今までなんとなくその場しのぎで理解していたAsynchronous Operationについて、備忘メモ的にまとめようと思う。

昔のJSでは、以下の様に .then() Callbackを使ってPromise Chainを書いていたが、これだと延々と.thenが続いてクリスマスツリーの様だ(アメリカではそう表現されてます)とのことで、async/awaitが今では主流だと教わっていました。

const promise = xxx_func()
promise.then(() =>{

...

}

しかしです。よくよく考えたら、Promiseを返さないFunctionもあるわけで、その場合にはPromise Chainがそこで分断されてしまいます。

そんな時は、このように、Promisifyすることで、Chainの一貫性を保つことができます。

await new Promise((resolve, reject) => {
    xxx.dosomething(error => {
        if(error){
           reject(error)
        } else {
           resolve()
        }
    });
})    
    

そういったメソッドが複数ある場合には、promises arrayに追加して、Promise.all(promises)で一気にまとめるのもいいと思います。

let promises = [];
for (let i = 0; i < 5; i++) {
  promises.push(doAsyncWork(i));
}

// Execute all promises
Promise.all(promises)
  .then(results => {
    console.log("All promises resolved:", results);
  })
  .catch(error => {
    console.log("One or more promises rejected:", error);
  });

覚える必要がないのはわかってますが、Syntaxを忘れがち&そもそもこのロジックを忘れがちなので、備忘録書かせていただきました。

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?