2017-05-17 6 views
-1

async/awaitはどうすればjavascriptにできますか?javascriptでaync/awaitを使用するにはどうすればよいですか?

私はすべての約束事とコールバックを取り除き、javascriptでasync/awaitを使用したいと思っていますか?

どうすればいいですか?

ヘルプはすべて割り当てられていますか?

+3

https://www.google.com/search?q=use+async%以下のコードを検討2Fawait + in + javascript – SLaks

+2

あなたを失望させて申し訳ありませんが、 'async' /' await'は約束を破棄しません。それは*それらを包む*。 – Bergi

+0

私に答えてくれてありがとう、しかし、私を説明することはできますか? –

答えて

3

非同期/の目的は機能を待つ同期約束を用いての挙動 を簡略化すると約束の グループにいくつかの動作を実行することです。プロミスが構造化 コールバックに似ているのと同様に、async/awaitは、ジェネレータと 約束を似ています。

は、この例を参照してください:

function resolveAfter2Seconds(x) { 
    return new Promise(resolve => { 
    setTimeout(() => { 
     resolve(x); 
    }, 2000); 
    }); 
} 

async function add1(x) { 
    var a = resolveAfter2Seconds(20); 
    var b = resolveAfter2Seconds(30); 
    return x + await a + await b; 
} 

add1(10).then(v => { 
    console.log(v); // prints 60 after 2 seconds. 
}); 

async function add2(x) { 
    var a = await resolveAfter2Seconds(20); 
    var b = await resolveAfter2Seconds(30); 
    return x + a + b; 
} 

add2(10).then(v => { 
    console.log(v); // prints 60 after 4 seconds. 
}); 

約束は約束チェーンになります返し、それは多くの部分に機能を分割API。次のように単一非同期機能を書き換えることができる

function getProcessedData(url) { 
    return downloadData(url) // returns a promise 
    .catch(e => { 
     return downloadFallbackData(url); // returns a promise 
    }) 
    .then(v => { 
     return processDataInWorker(v); // returns a promise 
    }); 
} 

async function getProcessedData(url) { 
    let v; 
    try { 
    v = await downloadData(url); 
    } catch(e) { 
    v = await downloadFallbackData(url); 
    } 
    return processDataInWorker(v); 
} 
関連する問題