0

我想收到来自被调用函数的响应(真或假),以决定该函数是继续还是停止。请查看以下代码以更好地理解:

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;
    } 
}
4

3 回答 3

2

您不需要在声明中添加 else 。检查您的变量是否为假,如果是,它将返回,否则您的函数的其余部分将自动运行。

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;
} 

}

于 2019-06-04T16:11:26.990 回答
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

确保传入一个布尔值。

于 2019-06-04T17:27:16.827 回答
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 并返回承诺的函数可能会更容易。

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);

于 2019-06-04T16:16:57.097 回答