从promise.success函数返回数据对象

时间:2016-07-19 09:23:12

标签: javascript jquery ajax typescript promise

我正在制作一个AJAX请求而我在处理promise响应时遇到问题。在示例中,AJAX请求是在未显示的函数内部进行的,但称为“requestOriginalDataFromAjax()

在“promise”形式中,它不可用,需要转换为具有promise.success功能的常规数据对象。但是传递promise.success函数的数据OUT是我遇到麻烦的地方。返回的数据总是返回undefined

以下是一个例子:

private convertPromise(){

      let requestedData:any = this.requestOriginalDataFromAjax();

      let promise:any = requestedData;

      promise.success(function (data) {
          console.log("data inside my converter: ");
          console.log(data);
          return data;
      });
}

private needToDoSomethingWithTheDataNow(){

      let convertedData:any = this.convertPromise();

      console.log("returned data: ");
      console.log(convertedData);
}

HERE是控制台输出:

data inside my converter:
full_data_object: ["blah":"blah"]

returned data:
undefined 

我知道过去曾问过这个问题,但毕竟我的研究和阅读仍然无法理解基于前面的例子。

1 个答案:

答案 0 :(得分:1)

您需要在convertPromise函数中返回promise,然后在调用者中正确使用它:

private convertPromise(){

  let requestedData:any = this.requestOriginalDataFromAjax();

  let promise:any = requestedData;

  promise.success(function (data) {
      console.log("data inside my converter: ");
      console.log(data);
      return data;
  });

  return promise;

}

private needToDoSomethingWithTheDataNow(){

  let convertedDataPromise:any = this.convertPromise();

  convertedDataPromise.success((function(convertedData) {
    console.log("returned data: ");
    console.log(convertedData);
  });

}