代码执行不等待返回值

时间:2019-01-16 06:44:40

标签: javascript

我有以下控制器,并且代码执行不等待该函数返回值。因此,某些代码行由于仍未定义而失败。如何确保行执行同步。

还请注意:调用程序函数位于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();
                }
            );
        });

1 个答案:

答案 0 :(得分:1)

问题是您需要等待结果。 Service.getMaterial返回了Promise,因此当您尝试执行代码行var x = data.Vendor;时,尚未定义变量数据。

您可以做的就是在promise结果中调用一个函数(then函数)。

我建议您进一步了解以下内容:

  1. Promise
  2. async/await pattern

我也希望您知道,如果我没记错的话,IE通常不支持promise / async-await;)