[英]Storing mysql query rows in variable for later use in another mysql query
[英]Storing observer in a global variable and use it later
如何在代碼后面創建可觀察對象並生成下一個值? 由於其他異步事件,我希望能夠從代碼的不同部分調用onNext。
這是我嘗試過的,不起作用:
var Rx = require('rx');
var GlobalObserver;
var source = Rx.Observable.create(observer => {
GlobalObserver = observer;
});
var subscription = source.subscribe(
x => console.log('onNext: %s', x),
e => console.log('onError: %s', e),
() => console.log('onCompleted')
);
//...later in the code, as a result of another async event:
GlobalObserver.onNext(someData);
...
GlobalObserver.onNext(someOtherData);
您需要的是某種主題。 ReplaySubject
, BehaviorSubject
, Subject
等。
創建一個主題,然后您可以執行subject.subscribe(...)
進行訂閱。 您也可以執行subject.onNext(...)
添加到流中。
例如:
var subject = new Rx.Subject();
var subscription = subject.subscribe(
function (x) { console.log('onNext: ' + x); },
function (e) { console.log('onError: ' + e.message); },
function () { console.log('onCompleted'); }
);
subject.onNext(1);
// => onNext: 1
subject.onNext(2);
// => onNext: 2
subject.onCompleted();
// => onCompleted
subscription.dispose();
一個更具體的用例(每次成功返回HTTP響應時,都會添加到可觀察流中):
var httpResponseStream = new Rx.Subject();
var subscription = httpResponseStream.subscribe(function (response) {
console.log('HTTP response success: ', response);
});
makeAJAXCall().then(function (response) {
httpResponseStream.onNext(response);
});
如另一位用戶所述,如果您使用的是V5,請確保將所有onNext
更改為next
。 如果您使用的是V4,請堅持使用onNext
。
我假設這是因為您使用的是rxjs版本^ 5.0.0,並閱讀了文檔^ 4.0.0。
對於RxJs版本^5.0.0
它應該是observer.next(value)
而不是observer.onNext(value)
。
在這里您可以找到RxJs版本^5.0.0
的文檔
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.