推迟此处理的好方法(javascript示例)

Col*_*tes 2 javascript web-services

我有一个延期问题,我想知道是否有一个好的方法来处理

这是我的代码:

getFullAddressFromId: function (contactId) {
            var contact;

                $.ajax({
                    url: "/WebServices/FormOverview.asmx/GetFullAddressfromId",
                    data: { id: contactId},
                    success: function (result) {
                        contact = result;
                    },
                        error: function (err) {
                            _local.sendNotification.apply(this, ['Failed to load address information', 'Error']);
                    }
                });     
            };

            return contact;     
        }
Run Code Online (Sandbox Code Playgroud)

这里的问题显然是"联系人"在访问返回语句时没有加载,因为webservice尚未完成运行.

如何推迟从此函数返回(getFullAddressFromId)以等待webserbvice.

Ray*_*nos 6

使用异步编程技术.

var getFullAddress = function(id, callback) {
  $.ajax({
    ...
    success: function(result) {
      // stuff
      callback(result);
    }
  });
}
Run Code Online (Sandbox Code Playgroud)

或者使用jQuery 1.5+的延迟对象

var getFullAddress = function(id) {
  return $.ajax({
    ...
  });
}

getFullAddress("22").done(function() {
  // handle result
});
Run Code Online (Sandbox Code Playgroud)