我曾尝试增加承诺内的变量loopVal,但我无法增加它。我怎样才能做到这一点?
const hi = function(delay) {
let loopVal = 1;
return new Promise((resolve, reject) => {
setTimeout(() => {
console.log("Resolved Successfully", loopVal);
resolve();
loopVal++;
}, delay)
})
}
const bye = async() => {
await hi(1000);
await hi(1000);
return "bye";
}
bye().then((value) => console.log(value));
首先,您的
loopVal
是函数的本地变量,一旦函数终止,它的更改就会被丢弃。
其次,你不会从承诺中返回更改后的值。
一种可能的方法是将此变量放在既可以用作参数又可以用作
hi
函数的返回值的范围内
const hi = function(val, delay) {
return new Promise((resolve, reject) => {
setTimeout(() => {
console.log("Resolved Successfully", val);
resolve(val+1);
}, delay)
})
}
const bye = async() => {
var val = 1;
val = await hi(val, 1000);
val = await hi(val, 1000);
console.log("Final value", val);
return "bye";
}
bye().then((value) => console.log(value));