繁体   English   中英

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

[英]How to call a function soon after other function execution is completed in javascript?

嗨,我有两个名为function_1和function_2的函数。 仅当function_1完成后,才应开始执行function_2。.仅在以es6语法完成function_1之后,如何才能调用function_2?

下面是代码,

this.function_1();
this.function_2();// this should be called soon after function_1 is done

我尝试过的

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

但以上似乎不起作用。 有人可以帮我解决这个问题。 谢谢。

在其他条件相同的情况下,您的第一个代码块就是您所需要的:

this.function_1();
this.function_2();

现在,它是可能的function_1可能引发一些异步的事情发生后function_1在技术上完成

如果要在所有这些操作完成后再运行function_2 ,则function_1必须显式提供一种允许该function_1的机制。


传统的方法是让function_1接受回调,在这种情况下将可行:

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

现代方法是让function_1返回一个promise,在这种情况下,它将起作用:

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

MDN具有有关Promises的详细信息

它也允许你使用await语法提供了一个内部函数声明async关键字。

async function myFunction() {
    await this.function_1();
    this.function_2();
}

MDN具有有关asyncawait的详细信息。


最后,重复我先前强调的观点: function_1必须显式启用这两种方法中的任一种。

您可以使用Promise,此外还可以使用async await

 function f1 () { return new Promise(res => setTimeout(() => res(console.log('f1')), 1000)); } function f2() { console.log('f2'); } async function f3() { await f1(); f2(); } f1().then(f2); // or with async await syntax f3(); 

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

您可以将function_2作为回调传递给function_1。 它告诉function_1,一旦完成执行,就应调用execute回调函数。

看一下这个。

 function function_1(callback) { console.log('function_1'); // Do some time consuming action. // Below setTimeout is just for demo purpose setTimeout(function() { callback(); }, 1000) } function function_2() { console.log('function_2'); } function_1(function_2); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM