Sychronous Json vs Asychonrous Json return



现在,我有两个返回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 数据,或者同步获取数据是否足够好。

promise 处理程序的结果就是你最终返回的结果。您的代码未返回任何内容。

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);
}

最新更新