如何使一个功能等到另一个功能发生后再在javascript上完成练习

时间:2019-01-30 14:33:03

标签: javascript

考虑一下,我有两个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中做到这一点?

2 个答案:

答案 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();
}