How to get a response from a called function?

I'd like to receive a response (true or false) from a called function to decide if the function should continue or stop. Look at the following code for better understanding:

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

Updated:

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

Upvotes: 0

Views: 128

Answers (3)

Brad Ball
Brad Ball

Reputation: 619

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

make sure that you pass in a Boolean value.

Upvotes: 0

HMR
HMR

Reputation: 39340

If function2 is synchronous you can just return:

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

If function 2 does something asynchronous and expects a callback (one of the tags in your question) then it may be easier to write a function that will use function2 and returns a 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);

Upvotes: 0

Brad Ball
Brad Ball

Reputation: 619

You don't need an else on the statement. check to see if your variable is false and if it is it will return if not the rest of your function will run automatically.

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

}

Upvotes: 2

Related Questions