0
我想了解rxjs並陷於debounceTime(n /* ms */)
實驗中。debounceTime使用Rxjs調用API調用
公共debounceTime(duetime參數:編號,調度程序:調度程序):可觀察
發射來自源僅在特定時間跨度而不另一個源發射通過後可觀察到的值。
我的代碼:
function fakeAPI() {
return new Rx.Observable(observer => {
const root = 'https://jsonplaceholder.typicode.com'
$.ajax({
url: root + '/posts/1',
method: 'GET'
}).then(function(data) {
observer.next(data)
}).fail(function(err) {
observer.error(err)
})
return()=>{
observer.complete()
console.log('unsubscribed!')
}
})
}
const fakeObserver = fakeAPI()
$('#buttonText').click(()=>{
fakeObserver
.debounceTime(10000)
.subscribe(() => {
return {
next(item) {
console.log('received: ', item.id)
},
error(err) {
console.log('error:', err)
},
complete() {
console.log('completed!')
}
}
}());
})
我的期望:即使在給定的時間量的點擊N多,API調用將只進行一次。相反,它似乎等待給定的時間,然後所有的N次點擊都會導致API調用。
我在做什麼錯?
根據文檔,debounceTime(n)應該丟棄之前未決的延遲發射,如果新值到達源。
這裏是一個JSBin link
我不與第4點清楚,我觀察到的是,它(我的代碼)表現完全像延遲(n)。是否因爲如果'.subscribe'調用是通過可觀察的,它將被視爲新訂閱?所以如果我有觀察者觀察API調用值,我是否能夠得到相同的結果? –
@Amresh Venugopal,請改述,我不明白 –
如果.subscribe調用一次給觀察者,那麼按照我的預期,只有在每N次點擊n次的情況下,debounce(n)纔會工作一次? –