[英]promise async await without .then callback
我試圖學習並更好地理解async
如何與新的async
/ await
關鍵字一起工作,但是有些事情令人困惑。
在本文中: https : //davidwalsh.name/async-await
它說使用async
和await
不需要使用回調,例如:
async function parallel(callback) {
const wait1 = wait(500);
const wait2 = wait(500);
await wait1;
await wait2;
callback( [wait1, wait2] );
}
如果要測試它,我們需要先定義一個超時功能,用作wait
:
var wait = function(time) {
return new Promise( function(resolve, reject) {
setTimeout(function() {
resolve( Math.random() * time );
}, time);
});
};
最后,我們需要一些東西來調用parallel
函數並讀取值:
parallel(function(data) {
console.log('data', data);
});
問題是,如果您讀取值-它們是一個Promise對象而不是實際值,則可以解決此問題:
async function parallel(callback) {
var wait1 = wait(500).then(function(data) {
wait1 = data;
});
var wait2 = wait(500).then(function(data) {
wait2 = data;
});
await wait1;
await wait2;
callback( [wait1, wait2] );
}
現在它將可以正常工作,在此處進行演示: https : //jsfiddle.net/jp3g2q5k/
但是您能幫我理解為什么我必須使用.then
回調嗎? 它應該是沒有回調的情況。 也許有人知道如何更改此代碼以使其不使用回調。
您正在使用'await'關鍵字解決承諾。 在您的示例中將是:
const result1 = await wait1;
const result2 = await wait2;
callback( [result1 , result2 ] );
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.