如何在javascript中其他函数执行完成后立即调用函数?

如何在javascript中其他函数执行完成后立即调用函数?,javascript,Javascript,嗨,我有两个函数,分别是函数1和函数2。仅当函数_1完成时,执行函数_2应开始执行..如何仅在函数_1以es6语法完成后调用函数_2 下面是代码 this.function_1(); this.function_2();// this should be called soon after function_1 is done 我所尝试的 this.function_1(()=> { this.function_2();} ); 但上述措施似乎并不奏效。有人能帮我解决

嗨,我有两个函数,分别是函数1和函数2。仅当函数_1完成时,执行函数_2应开始执行..如何仅在函数_1以es6语法完成后调用函数_2

下面是代码

this.function_1();
this.function_2();// this should be called soon after function_1 is done
我所尝试的

 this.function_1(()=> {
    this.function_2();}
    );

但上述措施似乎并不奏效。有人能帮我解决这个问题吗。谢谢。

考虑到函数_1会执行一些异步操作。您可以使用简单的回调来实现这一点

您可以将函数_2作为对函数_1的回调传递给。 它告诉函数_1,一旦完成其执行,它应该调用execute回调函数

看看这个

函数1回调{ console.log'function_1'; //做一些耗时的动作。 //下面的setTimeout仅用于演示目的 setTimeoutfunction{ 回调; }, 1000 } 函数2{ console.log'function_2'; }
功能1功能2 您可以使用承诺,另外还可以使用异步等待

函数f1{ 返回新的Promiseres=>setTimeout=>resconsole.log'f1',1000; } 功能f2{ 控制台。日志'f2'; } 异步函数f3{ 等待f1; f2; } f1.f2; //或者使用异步等待语法
f3 在所有其他条件相同的情况下,您只需要第一个代码块:

this.function_1();
this.function_2();
现在,函数_1可能会触发异步事件,所以在函数_1技术上完成之后,事情就会发生

如果您想在所有这些事情完成后运行函数_2,那么函数_1必须显式地提供一种机制来允许这样做

传统的方法是函数_1接受回调,这种情况下可以:

this.function_1(()=> {
    this.function_2();
});
this.function_1()
    .then(()=> {
        this.function_2();
    });
现代方法是函数_1返回一个承诺,在这种情况下,这将起作用:

this.function_1(()=> {
    this.function_2();
});
this.function_1()
    .then(()=> {
        this.function_2();
    });
MDN有

它还允许您使用wait语法,前提是您位于用async关键字声明的函数中

MDN有关于和的详细信息


最后,重复我前面的重点:函数_1必须显式地启用这两种方法中的任何一种才能工作。

this.function_1=>{应该是this.function_1==>{承诺是处理回调的一种很好的方法:您能展示一下这些函数的代码吗?如果function1是同步的,那么您已经可以开始了。但是,如果function1中存在异步行为,那么您应该将其定义为async,然后等待异步行为。谢谢。但是您提到的现代方法不起作用。@stackoverflow\u呃,如果函数_1正确地实现了承诺,它就可以了。你能告诉我如何在承诺中使用它吗?现在它只是一个普通的函数。