考虑一下,我有两个JavaScript函数sum和乘法定义如下:
function sum(a, b){
res1 = a + b;
return res1;
}
function multiply(x, y){
res2 = x * y;
console.log(res2);
}
然后我创建另一个这样的调用程序函数,假设我们已经定义了button
function caller(){
button.addEventListener('click', function(){
z = sum();
console.log(z);
})
multiply();
}
我希望调用者函数在单击事件发生之前停止执行并记录(z)的值,然后调用乘法函数。 如何在javascript中做到这一点?
答案 0 :(得分:3)
只需将multiply()
调用放在回调函数中:
function caller(){
button.addEventListener('click', function(){
z = sum();
console.log(z);
multiply();
});
}
答案 1 :(得分:0)
如何使一个功能等到另一个功能出现后再在javascript上完全排除版权?
答案是你不能。
Javascript是在单线程上执行的,并且不允许阻止。
您必须利用回调(它们有多种形式)才能实现异步工作流。
实际上您的功能就是这样,请参阅:
function caller(){
button.addEventListener('click', function(){
z = sum();
console.log(z);
})
multiply();
}
包含console.log(z);
的函数在运行addEventListener
时不会运行,而是保存了该函数以便以后调用。
如果您想看到它的实际效果,请运行以下命令并查看控制台日志的顺序。
function caller(){
button.addEventListener('click', function(){
z = sum();
console.log('2');
})
console.log('1');
multiply();
}