如何使用jQuery ajax实现RxJs?
问题描述:
这是我实现:如何使用jQuery ajax实现RxJs?
Rx.Observable.fromPromise($.ajax({
url : url + postal_value + '&types=(regions)&location=51.509865,-0.118092&key=' + key,
type : "GET",
datatype: "json"
}));
但Ajax调用进行,即使没有订阅。 是吗?
答
Ajax调用是会尽快你怎么称呼它开始执行的承诺。你需要在Rx.Observable.defer(() => Rx.Observable.fromPromise($.ajax(/*...*/)))
包裹它推迟执行所以它只被有线在实际订阅它
+0
我正在使用rxjs-jquery,但即使没有订阅,仍会激发$ .ajaxAsObservable。 – Elisa
+0
ajaxAsObservable犯规让$就懒(见https://github.com/Reactive-Extensions/rxjs-jquery/blob/master/src/ajax.js)。用'Rx.Observable.defer()'包装它以使其懒惰 –
如果你跑了'$。阿贾克斯()'行本身,AJAX调用会发生。通过调用Rx.Observable.fromPromise()来调整它并不会改变它。 – JLRishe