是否有可能将承诺的结果作为参数传递给IIFE

时间:2016-02-29 04:45:29

标签: javascript promise iife

我一直在重构一些使用IIFE来获取和启动一组值的旧代码。

var exampleInitiate = (function exampleInitiate(){
  ..call some backend service
})();

现在,根据新的要求,我必须用一个参数调用相同的IIFE,并且这个参数实际上是一个promise的结果,它本身稍后会被调用。我明白IIFE会立即被调用,即使我得到了承诺的结果,我能否再次致电IIFE?我理解IIFE只运行一次。

我认为最好不要在这里使用IIFE,因为在这种情况下它不适合。这是正确的,还是确实有办法让一个IIFE从一个承诺中传递一个参数值?

1 个答案:

答案 0 :(得分:0)

如果我理解你的话,你可以选择几个选项。首先,您可以将参数传递给IIFE:

var myPromise = getPromise();

var exampleInitiate = (function exampleInitiate(promise){
  promise.then(function() { ... });
  ..call some backend service
})(myPromise);

但我不会这么说清楚。我会建议擦除IIFE并像往常一样使用promises:

getSomeBackEndResponse().then(function (data) { ... })

编辑:如果你IIFE返回承诺本身然后是,我认为你不能再将函数的结果传递给自己,因为IIFE被调用一次。重新思考这段代码的逻辑。