![](/img/trans.png)
[英]How to call a function when a function execution is completed? - 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();
}
最后,重复我先前强调的观点: 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.