当前位置: 首页 > 知识库问答 >
问题:

是否有修复异步函数的方法[重复]

戚学
2023-03-14

在调试的目的,我写了一个新的代码,看看异步函数是如何工作的,所以我有下一个情况

我有3个函数log1(),log2(),main(),我希望:

当我调用main()时,它应该调用log1(),直到它完成所有语句,然后它应该调用log2()

function slowFunction(){
  setTimeout(() => {
    console.log('1')
  }, 2000);
}
function log1() {
  return new Promise(resolve =>{
    resolve(slowFunction())
  })
}
function log2() {
    console.log('2');
}

async function main() {
  var aux = await log1();
  log2();
}

main();

所以我希望它能输出

1个

2.

但它确实有产出

2.

1个

我要注意的是,我不能编辑slowFunction,您应该将它视为需要未知时间执行的函数,因此我需要等待它完成,然后程序应该执行log2();

共有2个答案

曾珂
2023-03-14

确保所有异步函数都用promise包装。

function slowFunction(){
  return new Promise(resolve =>{
    setTimeout(() => {
      resolve("1")
    }, 2000);
  })
}

async function log1() {
  let ret = await slowFunction()
  console.log(ret)
}

function log2() {
  console.log('2');
}

async function main() {
  var aux = await log1();
  log2();
}

main();
林炫明
2023-03-14

问题在于slowFunction。似乎您希望在超时后解析slowFunction,但它会立即返回当前写入的状态。您需要重写slowFunction以返回Promise,或者只需重写log1

function log1() {
    return new Promise((resolve) => {
        setTimeout(() => {
            console.log('1');
            resolve();
        }, 2000);
    });
}
 类似资料:
  • 我的布局如下: 我的职能 问题是我调用的函数在设置会话状态之前完成运行。在运行其余代码之前,我需要一些方法来等待状态被设置。有点像。那就好了。在类组件中,您可以使用第二个参数并将其传递给setState,但我使用的是函数组件。 我试着用一个promise: 这没用。。

  • 问题内容: 我有充分的理由相信函数rename()和unlink()都是异步的,根据我的理解,这意味着当调用函数时,它们下面的代码在文件系统上完成其过程之前会继续执行。对于互联网应用程序,这是一个问题,我将在下面解释,因为以后的代码取决于这些更改,这些更改已经确定。那么,有没有办法使两者同步,以便代码读取器在遇到这些功能时冻结,直到其所有任务在文件系统上完全执行为止? 这是delete-image

  • 我想使用谷歌云视觉API。我复制了代码,但出现以下错误:SyntaxError:await仅在异步函数中有效。 有没有办法解决这个问题? 非常感谢

  • 问题内容: 我正在将C库移植到Go。AC函数(带有varargs)的定义如下: 因此,我创建了包装器C函数: 如果我在Go中定义函数是这样的: Go编译器抱怨: 那么Go支持功能(方法)重载了吗,还是这个错误意味着其他? 问题答案: 不,不是的。 请参阅Go语言常见问题解答,尤其是有关重载的部分。 如果方法调度也不需要进行类型匹配,则可以简化该方法。其他语言的经验告诉我们,使用具有相同名称但签名不

  • 我有一个异步函数,它调用其中的另一个异步函数。此异步函数正在返回" 你能帮我解决这个问题吗? 以下是第一个异步函数: 如你所见,我调用updateAllProducts函数,并将该值存储到一个变量调用newAllProducts. updateAllProducts是另一个异步函数。 以下是updateAllProducts的代码: 此updateAllProducts函数正在调用另一个异步函数调

  • 我目前正在努力创建EventhubTrig在Java函数应用程序,它侦听IotHub的默认endpoint。目前按照教程,我没有看到任何用于Java函数应用程序的异步实现的示例代码,而建议对C#函数应用程序使用async/wait。 我是否应该考虑/是否可以在Java中为Function Apps添加异步实现?是否有任何示例代码可以参考?我是否应该考虑在函数应用中添加并行编程/多线程逻辑? htt