如何获得被调用函数的响应?

时间:2019-06-04 16:07:22

标签: javascript jquery function callback

我想从被调用函数接收响应(是或否),以确定该函数应该继续还是停止。查看以下代码以更好地理解:

function function1() {
    function2(); // call function2
    // after called function (here I need true or false, to decide if the function should stop or continue)
}

function function2() {
    if (condition === value) {
        // do something, give function1 a response to continue
    } else {
        // do something, give function1 a response to stop
    }
}

已更新:

function function1() {
    console.log('call function2');
    function2(); // call function2
    // after called function (here I need true or false, to decide if the function should stop or continue)
    console.log('back from function2');
}

function function2() {
    if (condition === false) {
        console.log('condition === false');
        return;
    } 
}

3 个答案:

答案 0 :(得分:2)

语句中不需要其他。请检查您的变量是否为false,如果不是,它将返回,否则函数的其余部分将自动运行。

function function1() {
function2(); // call function2
// after called function (here I need true or false, to decide if the function should stop or continue)
}

function function2() {
if (condition === false) {
    return;
} 

}

答案 1 :(得分:0)

如果function2是同步的,则可以返回:

function function1() {
  if(!function2()){
    return
  }; // call function2
  // after called function (here I need true or false, to decide if the function should stop or continue)
}

function function2() {
  if (condition === value) {
    return true;
  } else {
    return false;
  }
}

如果函数2执行异步操作并需要回调(您的问题中的标记之一),则编写使用function2并返回promise的函数可能会更容易。

function function1(condition) {
  console.log('calling function 2');
  function2AsPromise(condition).then(function(
    function2Result
  ) {
    if (!function2Result) {
      console.log('function 2 result is false');
      return;
    }
    console.log('function 2 result is true');
  });
  console.log('exiting function 2');
}

function function2(condition, callback) {
  setTimeout(function() {
    if (condition) {
      callback(true);
    } else {
      callback(false);
    }
  }, 2000);
}

function function2AsPromise(condition) {
  return new Promise(function(resolve) {
    function2(condition, resolve);
  });
}

function1(false);

答案 2 :(得分:0)

const function1 = check => {
   if (check === false) {
     return;
   } else {
   console.log("back from function2");
 }
};


function1(false) // console.log doesn't run
function1(true) // console.log runs

确保您传递布尔值。