Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
はじめに JavaScriptは如何にしてAsync/Awaitを獲得したのか - がおさんち 技術部屋 ※事前に↑の記事は読まなくても大丈夫です という記事を、以前に個人ブログの方に書いたのですが、私も今年からはQiita始めたので、この記事をリファインして再度書いてみようと思います。 また、この記事では↑の記事では書ききれなかった話もいくつか増やしています。 例えば、不定回数実行されるPromiseの話だとか、非同期処理における例外処理周りの面倒くさい話だとか。 そういうちょっとだけ高度な話も混ぜつづ、前回書いたものよりもクオリティを上げるのを目標にします。それではいきます。 第一章 ~人類はsetTimeoutを採用しました~ 古代のJavaScriptで、以下のような処理をしたい場合、どうしていたでしょうか。 ブラウザ更新直後に『a』を表示し、その2秒後に『b』を表示し、更にその1
はじめに 今更ですが、JavaScriptのasync/awaitに関する備忘録になります。 「今まで$.Deferred()やPromiseなどで非同期処理は書いたことがあるが、async/awaitはわからない」 「$.Deferred()やPromiseなどの非同期処理の書き方より、もっと簡潔に書ける書き方があれば知りたい」 「今までの非同期処理の書き方と比べて何が良いのかわからない」 といった人達向けの記事です。 $.Deferred()やPromiseなどで非同期処理を書いたことがある前提のため、非同期処理自体に関する説明は記載しておりません。 記載している利用例のコードはChrome(最新)のコンソール上で動きますので、コンソール上で実行して動作を確認してみると理解が深まりやすいと思います。 本記事で用いている用語 Promiseを返す Promiseオブジェクトを返すこと。
ES2017で仕様に入ったAsyncFunctionとawait単項演算子。 これらを使うと非同期処理を同期的に書くことができ、非同期処理のループもシンプルに書けるようになる。 この記事の内容は全てNode.jsのv8.6.0で動作確認している。 非同期処理の基礎はこちら。 AsyncFunction 関数定義の前にasyncとつけると、その関数はAsyncFunctionになる。 async function myFunc(){ return 'foo'; } console.log(myFunc); // [AsyncFunction: myFunc] console.log(myFunc()); // Promise { 'foo' } myFunc().then(res => console.log(res)); // foo 非同期処理をシンプルに書けていることが分かる。 Asy
現在運用中のプロジェクトのNodeのバージョンを7から8にあげたのでPromiseで書いていた箇所を徐々にasync/awaitに置き換えています。 簡単に書ける一方でPromsieに慣れすぎていたため、「これ並列処理になるんだっけ」とか、「てか、これ動く?」見たいなレベルで手になじまなかったので色々ためして馴染もうと思います。 利用するタイマー関数 function timer(ms, name) { console.log(`name: ${name} start!`) return new Promise((resolve, reject) => { setTimeout(() => resolve(name), ms) }) } Case.1 awaitを書いて非同期処理の関数を並べて書く (async () => { const result1 = await timer(100
Promiseとasync/awaitで複数の非同期処理の結果を待機する方法についてのメモです。 非同期処理をループで複数実行した場合に、 すべての非同期処理の完了を待つのに困ったので調べてみました。 下記のような、非同期処理があった場合、 完了後に処理を行いたい場合はcallbackで行う必要があります。 let doAsyncJob = (data) => { // do async job setTimeout(() => { console.log("wait " + data + " sec."); }, data); }; 完了後にcallbackを実行。 asyncJob.js let doAsyncJobWithCallback = (data, callback) => { // do async job setTimeout(() => { console.log("w
axios について、いくつか記事を書いておきながら導入についての記事を書いていなかったので、導入について記しつつ こちらの記事 で示した構成も作ってみた。 更新情報 2018/05/15 axios へのリンクを更新しました( @ledsun 様、ご指摘ありがとうございました ) 2018/07/02 axios のインスタンス生成時に指定している headers の内容を修正しました( @dyoshikawa 様、ご指摘ありがとうございました ) 過去に書いた axios の記事 [axios] axios で UnitTest 時に adapter を利用する [axios] 画像データのレスポンスを取得する際にハマった話 この記事を実施した環境 Windows10 Home 64bit macOS High Sierra( 10.13.4 ) nodist v0.8.8 ( in
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く