如何在异步函数中增加值

问题描述 投票:0回答:1

我曾尝试增加承诺内的变量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));

javascript asynchronous async-await promise resolve
1个回答
0
投票

首先,您的

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

© www.soinside.com 2019 - 2024. All rights reserved.