我有以下控制器,并且代码执行不等待该函数返回值。因此,某些代码行由于仍未定义而失败。如何确保行执行同步。
还请注意:调用程序函数位于for循环内。
一个Controller.js
for (var i=0; i< parseObj.length; i++){
callerFunc: function() {
vc._getValues(A, B, C).then(function (data) {
var vendorNo = data.vendorNo;
var vendorName = data.vendorName
});
// lines of code
}
_getValues: function(A, B, C){
var filters = [
.....
];
var vc = this;
return new Promise(function (resolve, reject) {
service.getDataByFilters(vc, filters,
function (data) {
resolve(data);
},
function (error) {
reject();
}
);
});
答案 0 :(得分:1)
问题是您需要等待结果。 Service.getMaterial
返回了Promise,因此当您尝试执行代码行var x = data.Vendor;
时,尚未定义变量数据。
您可以做的就是在promise
结果中调用一个函数(then函数)。
我建议您进一步了解以下内容:
我也希望您知道,如果我没记错的话,IE通常不支持promise / async-await;)