下面的腳本回傳promise,里面有一個帶有兩個索引的陣列,我想分別獲取index=0和index=1并輸出它們,不使用console.log怎么辦?
async function a1(callback) {
var a = 2 2;
return await [a, callback()];
}
async function a2() {
var b = 2 3;
return await b;
}
console.log(a1(a2));

我對 Artash Grigoryan 的問題

uj5u.com熱心網友回復:
在 javascript 中,異步函式總是回傳 promise。
我不完全確定您在這里的意圖,但是查看您的繪圖,我假設您需要await在第 3 行和第 9 行添加額外的內容。此代碼應該適合您:
async function a1(callback) {
var a = 2 2;
return await [a, await callback()];
}
async function a2() {
var b = 2 3;
return await b;
}
await a1(a2);
參考: https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function
uj5u.com熱心網友回復:
我真的不明白為什么沒有console.log,但你可以這樣做:
async function main() {
console.error(await a1(a2));
}
async function a1(callback) {
var a = 2 2;
return await [a, callback()];
}
async function a2() {
var b = 2 3;
return await b;
}
main();
uj5u.com熱心網友回復:
a2是一個異步函式,因此callback()不會在此陳述句中解決return await [a,callback()]。
您可以檢查回呼是否為AsyncFunction型別,如果是,則可以等待它得到解決,然后再回傳值
async function a1(callback) {
var a = 2 2;
if (callback.constructor.name === 'AsyncFunction') {
const m = await callback().then(val => val)
return [a, m]
}
return await [a, callback];
}
async function a2() {
var b = 2 3;
return await b;
}
a1(a2).then(d => console.log(d))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/471228.html
標籤:javascript
