现在,我有两个返回JSON数据的函数。
searchAjax(url: any): any
{
let new_data: any;
return $.ajax({
url: url,
type: 'post',
dataType: "json",
async: false
}).responseText;
}
search(): Promise<any>
{
return this.http.get('app/php/search.php')
.toPromise()
.then(response => {
//console.log("search");
console.log(response.json());
response.json();
})
.catch(this.handleError);
}
现在searchAjax
正确地返回了json数据,但它是同步的,而search
只返回null,即使console.log(respon.json())
实际打印了正确的json对象。
我只是想知道是否有办法异步获取JSON数据,或者同步获取数据是否足够好。
答案 0 :(得分:1)
承诺处理程序的结果是您最终返回的结果。你的代码没有返回任何内容。
search(): Promise<any>
{
return this.http.get('app/php/search.php')
.toPromise()
.then(response => {
return response.json();
// ^^^^^^
})
.catch(this.handleError);
}
或者,简而言之(此处return
是隐式的,但您必须记住它在那里):
search(): Promise<any>
{
return this.http.get('app/php/search.php')
.toPromise()
.then(response => response.json())
.catch(this.handleError);
}