Как получить ответ от вызываемой функции? - PullRequest
0 голосов
/ 04 июня 2019

Я хотел бы получить ответ (true или 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 === 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 ]

2 голосов
/ 04 июня 2019

Вам не нужно больше в заявлении.проверьте, является ли ваша переменная ложной, и если это так, то она вернется, если нет, остальная часть вашей функции запустится автоматически.

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

}

0 голосов
/ 04 июня 2019
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

убедитесь, что вы передаете логическое значение.

0 голосов
/ 04 июня 2019

Если функция2 синхронна, вы можете просто вернуть:

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 делает что-то асинхронное и ожидает обратного вызова (один из тегов в вашем вопросе), тогда может быть проще написать функцию, которая будет использовать функцию 2 и возвращает обещание.

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