Mazzy
Mazzy

Reputation: 14179

Having if-else condition inside promises chains

I have a promises chain and inside some points I have if-else condition like the following:

.then(function() {

   if(isTrue) {
     // do something returning a promise
   } else {
     // do nothing - just return
     return;
   }
})
.then(function() {
   ...
})

Honestly I don't like this pattern. I feel it wrong. I mean using just a plain return without anything. Do you have some idea to make look different this code?

Upvotes: 2

Views: 3382

Answers (2)

webdeb
webdeb

Reputation: 13211

I guess you have tested the code. And recognized that this is not working like you expected. Let me explain you:

function getPromise() {
  callSomeFunctionWhichReturnsPromise().then(function(result) {
    return result; // You hope, that this will be logged on the console? nope, you have to do it here instead.
    console.log('logged in the promise', result); // This will work
  });
}

var result = getPromise();
console.log(result); // undefined!!!

you could instead do this:

function getPromise() {
  return callSomeFunctionWhichReturnsPromise();
}

var result = getPromise();
result.then(console.log); // will call console.log(arguments)

Upvotes: 0

Bergi
Bergi

Reputation: 664356

That else { return; } part can simply be completely omitted without changing the code's meaning:

.then(function() {
    if (isTrue) {
        // do something returning a promise
    }
})

Functions do return undefined anyway by default.

Upvotes: 2

Related Questions