Javascript “resolveAfter2Seconds”如何返回20?
下面的代码来自 我不明白如何在2秒(20)后返回变量a的Javascript “resolveAfter2Seconds”如何返回20?,javascript,Javascript,下面的代码来自 我不明白如何在2秒(20)后返回变量a的20 在我看来,从解析承诺中获取“返回值”的唯一方法是使用Promise.prototype.then()。下面的代码不使用then(),但仍然可以获得20。为什么?我是遗漏了什么还是误解了什么 function resolveAfter2Seconds(x) { return new Promise(resolve => { setTimeout(() => { resolv
20
在我看来,从解析承诺中获取“返回值”的唯一方法是使用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.
});
wait
将返回已解析的值
从
如果将承诺传递给wait表达式,它将等待
Promise的解析并返回解析的值
等待返回解析值
但是
不返回拒绝的值
为此,我们需要使用try catch
块。您可以参考以下示例:
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);
});
解析(x)其中x为20?等待与然后执行相同的操作。。。然后(v=>)==v=等待prom<代码>a
不是20
<代码>等待a是20
@Jonasw您是对的,等待文档也提到了这一点。非常感谢。