2016-02-29 60 views
0

我一直在重构一些使用IIFE来获取和启动一组值的旧代码。是否有可能将承诺的结果作为参数传递给IIFE

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

现在,按照新的要求,我必须调用同一IIFE与参数,这种说法其实是它本身是很久以后调用的承诺的结果。我明白,IIFE立即被调用,即使我得到承诺的结果,我是否可以再次致电IIFE?我理解IIFE只能运行一次。

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

+0

为什么不通过承诺本身,而不是承诺的价值?由于承诺尚未被调用,因此它没有价值,但是您可以轻松将承诺传递给IIFE,然后在解决问题时使用它的价值。 – Paulpro

回答

0

如果我理解你正确,你可以有几个选项。首先,你可以通过这样的参数传递给IIFE:

var myPromise = getPromise(); 

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

但是我不会这样说清楚。我建议擦除IIFE和使用的承诺,你通常会做:

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

编辑:如果你IIFE回报承诺本身然后是,我认为你可以在功能本身的结果再次不及格,因为IIFE被调用一次。重新思考这段代码的逻辑。

相关问题