JS中的条件承诺

时间:2019-06-03 00:02:38

标签: javascript

我正在努力减少对多个功能的需求,尤其是因为许多功能都具有promise的功能。但是,我希望添加一个基于props的父母条件。

例如,我有一个功能

example
  .doSomething()
  .then(something => {
    example.createSomething(something)
  });

但是如何添加将.doSomething()props的{​​{1}}更改为somethingElse的条件?

因此,如果.doSomethingElse()将会是

somethingElse === true

2 个答案:

答案 0 :(得分:2)

我在手机上写这个不怪我,以后可以整理一下。

Promise.resolve(somethingElse ? example.doSomethingElse() : example.doSomething())
    .then(...

如果您认为写两次example很繁琐

Promise.resolve(example[somethingElse ? "doSomethingElse" : "doSomething"]())
    .then(...

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise

通过@Phil

如果两个(所有)函数均返回Promise 可以简单地做

example[somethingElse ? "doSomethingElse" : "doSomething"]().then(...

请注意,这意味着以上Promise.resolve甚至可以处理非Promise返回值

答案 1 :(得分:0)

您可以使用Promise.all方法

let cleaRoom = function(){
        return new Promise(function(resolve, reject){
            resolve('room is cleaed')
        })
    }
    let removeGarbage = function(message){
        return new Promise(function(resolve, reject){
            resolve(message + ' garbage is removed')
        })
    }
    let wonIcecream = function(message){
        return new Promise(function(resolve, reject){
            resolve(message + ' won the icecream');
        })
    }
Promise.all([cleaRoom(),removeGarbage(),wonIcecream()]).then(function(){
    console.log('finished all');
})