どうしてもjavascriptの処理の順番を直列に出来ません。理解が出来ません。
promiseかasync,awaitを使って、処理の順番を保証できる事を実感できるコードを教えてほしいです。
es6でお願いします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
投稿2017/10/21 02:54
総合スコア18164
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
ベストアンサー
具体的にやりたいことが書いてあった方が助かるのですが、
簡単な例で言うとこんな感じでしょうか。
// fetchをreturnしているので戻って来るのはPromise const fn = () => fetch('https://facebook.github.io/react-native/movies.json'); // fnのリターンはPromiseなのでresにはPromiseが入る const test1 = () => { const res = fn(); console.log('async', res); } // fnから返って来たPromiseをawaitすることでfetchの結果がresに入る const test2 = async () => { const res = await fn(); console.log('sync', res); }
実行結果
test1(); async Promise {[[PromiseStatus]]: "pending", [[PromiseValue]]: undefined} test2(); sync Response {type: "cors", url: "https://facebook.github.io/react-native/movies.json", redirected: false, status: 200, ok: true, …}
Promiseというのは約束(予約)なので
結果を受け取るためにはawaitで待つ必要があります。
自分が持っているのがPromiseであり、その結果がほしいのであれば
awaitやPromise.allで待てばOKなので、確かめながら組めばできると思います。
投稿2017/10/21 02:24
編集2017/10/21 08:54総合スコア928
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/10/21 08:30
2017/10/21 08:53
0
実感できるコード
とても単純な例が以下に載っています。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Statements/async_function
javascript
1async function add1(x) { 2 var a = resolveAfter2Seconds(20); // これは非同期処理をPromiseで返す関数 3 var b = resolveAfter2Seconds(30); // 同上 4 return x + await a + await b; // 2つの非同期処理を同期的に逐次処理する部分 5}
ただ・・・このサンプルを見て雰囲気はつかめたとしても実際に書くにはやはり順番にPromise, async, awitの細々とした点の把握が必要と思います。
投稿2017/10/21 06:53
総合スコア18394
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。