我遇到了一个问题,因为我不知道如何分离函数。我有这样的代码,我只想在then()语句中调用函数,但我不知道如何将它们移出,因为它们有共同的变量。
.then(function(data){
var rs = data.DL;
var zones = [];
var cluster = [];
var loadStructure = [];
function loadJsonData(rs, loadStructure) {
//body method
//creating zones[];
//creating cluster[];
return loadStructure;
}
function loadJsonInterZoneLinks(loadStructure, rs) {
//body method
//uses zones[]
return loadStructure;
}
function loadJsonIntraZoneLinks(loadStructure, rs) {
//body method
//uses zones[] and cluster[]
return loadStructure;
}
loadJsonData(loadStructure, rs);
loadJsonInterZoneLinks(loadStructure, rs);
return loadJsonIntraZoneLinks(loadStructure, rs);
})
每个函数都会将新值推送到loadStructure,最后一个函数会返回完整数组。我不知道如何将函数移出then(),因为有共同的变量。
发布于 2018-08-23 08:14:07
你可以像下面这样做:
function loadJsonData(rs) {
//body method
//creating loadStructure[];
//creating zones[];
//creating cluster[];
var loadStructure= [];
var zones = [];
var cluster = [];
return new Promise(function(resolve, reject) {
resolve([loadStructure, zones, cluster]);
});
}
function loadJsonInterZoneLinks(rs, loadStructure, zones, cluster) {
//body method
//uses zones[]
return new Promise(function(resolve, reject) {
resolve([loadStructure, zones, cluster]);
});
}
function loadJsonIntraZoneLinks(rs, loadStructure, zones, cluster) {
//body method
//uses zones[] and cluster[]
return new Promise(function(resolve, reject) {
resolve([loadStructure, zones, cluster]);
});
}
yourfunction()
.then(function(data){
var rs = data.DL;
return loadJsonData(rs);
})
.then(function(data) {
return loadJsonInterZoneLinks(rs, data[0], data[1], data[2]);
})
.then(function(data) {
return loadJsonIntraZoneLinks(rs, data[0], data[1], data[2]);
})
.then(function(data) {
//HERE your final DATA return from here
});
https://stackoverflow.com/questions/51980883
复制相似问题