我正在制作一个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
我知道过去曾问过这个问题,但毕竟我的研究和阅读仍然无法理解基于前面的例子。
答案 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);
});
}