observable 是懒惰的吗? Angular 5
Does observable are lazy ? Angular 5
this.postService.delete(ps).subscribe(resp => this.res = resp);
console.log('result'+this.res);
控制台显示结果:未定义
observable 是懒惰的吗?
不,他们不懒惰,但他们异步。
试试这个:
this.postService.delete(ps).subscribe(resp =>
{
this.res = resp;
console.log('result'+this.res);
});
与懒惰无关。它与异步.
有关
您正在发送 AJAX 请求。 AJAX中的第一个A表示异步。这意味着您发送请求,并且执行不会阻塞,直到响应返回。那会冻结整个应用程序。即使是这样,您也不必处理可观察对象。 HttpClient 会直接 return 响应。
因此,相反,它是异步的:您发送请求,然后在服务器发送和处理请求的同时继续执行任何您想做的事情。当响应最终返回时(可能是几秒钟后),浏览器通过调用回调函数告诉您它可用:您传递给 subscribe()
.
的回调函数
你可以把它看成一个烤面包机:你把面包放在烤面包机里,你可以在烤面包的同时继续阅读你的日记和浏览 Twitter。在烤面包机告诉您烤面包准备好之前,您不能开始吃烤面包。
this.postService.delete(ps).subscribe(resp => this.res = resp);
console.log('result'+this.res);
控制台显示结果:未定义
observable 是懒惰的吗?
不,他们不懒惰,但他们异步。
试试这个:
this.postService.delete(ps).subscribe(resp =>
{
this.res = resp;
console.log('result'+this.res);
});
与懒惰无关。它与异步.
有关您正在发送 AJAX 请求。 AJAX中的第一个A表示异步。这意味着您发送请求,并且执行不会阻塞,直到响应返回。那会冻结整个应用程序。即使是这样,您也不必处理可观察对象。 HttpClient 会直接 return 响应。
因此,相反,它是异步的:您发送请求,然后在服务器发送和处理请求的同时继续执行任何您想做的事情。当响应最终返回时(可能是几秒钟后),浏览器通过调用回调函数告诉您它可用:您传递给 subscribe()
.
你可以把它看成一个烤面包机:你把面包放在烤面包机里,你可以在烤面包的同时继续阅读你的日记和浏览 Twitter。在烤面包机告诉您烤面包准备好之前,您不能开始吃烤面包。