3

我有一个函数,它在调用时将输出返回到一个 Promise 函数。

我有一个 executeScript 方法,它动态处理 Javascript 方法并返回关于这些方法返回内容的承诺。

基础骨架

Ref.executeScript({
                code: "getData(); function getData(){ var res = 'Hello'; return res;}",
            function(results){
     console.log(results); ////THIS RETURNS "Hello"
   });

当代码直接返回一个变量时,它可以工作。例如,以下代码在执行时返回 Hello。

getData();
 function getData(){
   var res = "Hello";
   return res;
  }

但是,如果我在单击事件中返回它,它会在单击按钮时返回先前的值“Hello”而不是“Hello2”。我希望返回“Hello2”。

getData();
function getData(){
 var res = "Hello";
 jQuery("#myButton").on('click', function(){
   res = "Hello2";
   alert(res); //this gets called
  });
return res;
}

更新了原始问题以提供更清晰的信息

4

3 回答 3

0

当然,它仍然返回“Hello”,因为当您调用该函数时,它不会进入 click 函数。你的函数真正做的是为点击事件设置一个动作,而不是调用它。您不能真正在单击事件函数中返回值,我无法想象您在哪里需要它。您可以尝试使用这样的超出范围的变量,但我不建议这样做:

var hasBeenClicked = false;
jQuery("myButton").on('click', function(){ 
     hasBeenClicked = true;
});

function buttonWasClicked() {
     var res = hasBeenClicked;
     hasBeenClicked = false;
     return res;
});
于 2019-02-06T06:06:17.357 回答
-1

你应该写这样的东西:

var res = '';
function getData(){
    res = "Hello";
    return res;
}

$(document).ready(function() {
    $("#myButton").click(function(e){
       e.preventDefault(); //if you have form to submit
       res = "Hello2";
    });
});
于 2019-02-06T05:59:59.520 回答
-1

我认为您想为此更新单击事件的值,您必须使用 javascript 原型试试这个

function GetData(){
   this.res = "Hello";

} 
jQuery("#myButton").on('click', function(){

   GetData.prototype.res = "Hello2";
     alert(res); //this gets called
  });
  getData  = new GetData();
  console.log (getData.res)
于 2019-02-06T06:03:31.510 回答