gpt4 book ai didi

javascript - `resolveAfter2Seconds `如何返回20?

转载 作者:行者123 更新时间:2023-11-29 23:44:07 25 4
gpt4 key购买 nike

以下代码来自https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function .

我不明白 resolveAfter2Seconds(20) 如何为变量 a 返回 20

在我看来,从 resolved Promise 获取“返回值”的唯一方法是使用 Promise.prototype.then()。下面的代码没有使用 then() 但仍然可以获得 20。为什么?我是否遗漏了什么或误解了什么?

  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.
});

最佳答案

等待返回已解析的值

但是但是

不返回被拒绝的值

为此我们需要使用 try-catch block 。你可以引用这个例子:

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

async function add1(x) {

try {
return await resolveAfter2Seconds(20);
} catch (e) {
return e
}

}

add1(10).then(v => {
console.log(v);
});

关于javascript - `resolveAfter2Seconds `如何返回20?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44581649/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com