我一直在重构一些使用IIFE来获取和启动一组值的旧代码。
var exampleInitiate = (function exampleInitiate(){
..call some backend service
})();
现在,根据新的要求,我必须用一个参数调用相同的IIFE,并且这个参数实际上是一个promise的结果,它本身稍后会被调用。我明白IIFE会立即被调用,即使我得到了承诺的结果,我能否再次致电IIFE?我理解IIFE只运行一次。
我认为最好不要在这里使用IIFE,因为在这种情况下它不适合。这是正确的,还是确实有办法让一个IIFE从一个承诺中传递一个参数值?
答案 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被调用一次。重新思考这段代码的逻辑。