javascript оператор возврата, чтобы прекратить выполнение остальных операторов - PullRequest
0 голосов
/ 15 марта 2020

У меня есть сценарий, в котором я хочу прервать следующий вызов функции, если предыдущая функция имеет оператор return, но я вижу, что он выполняет следующий вызов функции даже после того, как у меня есть оператор return в функции ниже, названной "b".

function main(){
  a()
  b();
  c();
}

function a(){
  console.log("function a call!!");
}
function b(){
  console.log("function b call!!");
  return function(){return 0;}
}
function c(){
  console.log("function c call!!");
}

main()

Outout:

'function a call!!'
'function b call!!'
'function c call!!'

Ожидаемый результат:

'function a call!!'
'function b call!!'

Может кто-нибудь объяснить мне, как правильно делать здесь?

Ответы [ 2 ]

1 голос
/ 15 марта 2020

Вы не можете отменить вызов функции C, так как вы не проверяете, что возвращает b. Пусть b возвращает true, например, и проверяется с помощью

let resultB = b();
if(!resultB) c();
1 голос
/ 15 марта 2020

Вы не можете управлять потоком для функции вызывающего абонента из функции вызываемого абонента. ваш код просто возвращает function из b(), но эта функция никогда не выполняется, и даже если это так, она не будет иметь ожидаемого поведения. Если вы хотите прервать main, сделайте это в самом main:

function main(){
  a()
  const bReturnValue = b();
  if(bReturnValue <some condition>) {
      return;
  }
  c();
}

function a(){
  console.log("function a call!!");
}
function b(){
  console.log("function b call!!");
  return function(){return 0;}
}
function c(){
  console.log("function c call!!");
}

main()
...