如何将另一个参数添加到承诺解析值

时间:2015-05-25 13:51:17

标签: javascript dojo promise

我确实对此有一个简单的答案,而且我可能只是没有正确使用承诺但仍然如此。 假设我有一个返回promise的方法,我有一个方法需要接收两个参数才能工作,我实际上已经有了。 现在,因为我不希望我的功能无穷无尽,所以我将它们拆分为较小的功能,现在我无法掌握我的参数。 所以要清楚,这里有一些没有问题的工作(虽然可能有点原理图)

                var origFeatures = [];
                _.each(wrappedFeatures, function (wrappedFeature) {
                bufferTasks.push(geometryEngineAsync.buffer(
                            [feature.geometry]
                            , feature.geometry.type === "polygon" ? [0] : [5]
                            , esriSRUnit_Meter));
                    }
                }.bind(this));
                all(bufferTasks).then(function(bufferedFeatures){
//doing something with the bufferedFeatures AND origFeatures

}.bind(this))

现在成像方法很长,所以当我分裂到这个

之前的某处定义
                 function _saveGeometries(bufferedFeatures){
                 //do something with buffered features AND the original features
                  }

                    var origFeatures= [];
                _.each(wrappedFeatures, function (wrappedFeature) {
                bufferTasks.push(geometryEngineAsync.buffer(
                            [feature.geometry]
                            , feature.geometry.type === "polygon" ? [0] : [5]
                            , esriSRUnit_Meter));
                    }
                }.bind(this));
                all(bufferTasks)
                .then(this._saveNewGeometries.bind(this))

我当然看不到原始功能,因为它们不在包装功能的范围内

所以我尝试做的就是在中间创建一个函数并使用async结果和附加参数解析它,但附加参数是未定义的

                    var featuresFromAttachLayer = [];
                _.each(wrappedFeatures, function (wrappedFeature) {
                bufferTasks.push(geometryEngineAsync.buffer(
                            [feature.geometry]
                            , feature.geometry.type === "polygon" ? [0] : [5]
                            , esriSRUnit_Meter));
                    }
                }.bind(this));
                all(bufferTasks).then(function(bufferedFeatures) {
                    var deff = new Deferred();
                    deff.resolve(bufferedFeatures, wrappedFeatures);
                        return deff.promise;
                    })
                .then(this._saveNewGeometries.bind(this))

任何想法如何以正确的方式传递参数,无论是在良好的代码方面还是技术方面。

0 个答案:

没有答案