首页 > 解决方案 > 如何创建两个异步函数,等待 10 秒后返回 javascript 中任意数量参数的总和

问题描述

如何创建两个异步函数,其中第一个函数将等待 10 秒并返回任意数量的 number 类型参数的总和(使用扩展运算符),另一个将等待第一个函数完成并在返回值上再加 10第一个函数,最后返回输出。我很感谢任何帮助,因为这些对我来说很新……我已经试过了……

var a=0;
setTimeout(function() { Addition(); }, 10000);
async function Addition() 
{
  for (var i=0; i < arguments.length; i++) {
  a += arguments[i];    
}
return a;
}
async function secondFunction()
{
 await Addition();
 a = a + 10;
 return a;
};
 console.log(Addition(2, 3));

标签: javascriptfunctionasync-await

解决方案


您可以使用返回已解决的 Promise 和 setTimeout 的组合。在第一个异步函数中,您正在等待 Promise 被解析,这只会在 setTimeout 函数运行 10 秒后才会发生,然后它会返回resolve参数。

async function first(...numbers) {
  const result = numbers.reduce((x, y) => x + y);
  await new Promise(resolve => setTimeout(resolve, 10000));
  return result;
}

function second(n1) {
  return n1 + 10;
}

(async () => {
  const result1 = await first(10, 10, 10, 10);
  const result2 = second(result1);
  console.log(result2); // results in 50
})();

推荐阅读