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

Is it possible to pass the result of a promise as an argument to IIFE

本文关键字:IIFE 有可能 承诺 结果 是否      更新时间:2023-09-26

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

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

现在,根据新的要求,我必须用一个参数调用同一个IIFE,这个参数实际上是承诺的结果,它本身在很久以后被调用。我知道IIFE会立即调用,即使我得到了承诺的结果,我还能再次调用IIFE吗?我知道 IIFE 只运行一次。

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

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

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

但我不会说这种方式很清楚。我建议删除 IIFE 并像往常一样使用承诺:

getSomeBackEndResponse().then(function (data) { ... })
编辑:如果你的IIFE

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