Hi everyone,
I’ve been making a server side application with Meteor, but I’ve taken RxJS into the fold, it’s because I love how RxJS standardized there syntax and usage across languages implementation. Plus that, Meteor seems to be kinda “reactive” solution.
But I’ve been hitting with this problem when using RxJS with meteor/http
’s HTTP.call
as per image
The code that cause problem
someMethodsThatCallHTTPCall() {
return Observable.create(observer => {
HTTP.call('path', (err, res) => {
// Some processing
})
}
}
I’ve done some other googling and try out. All these combination.
Bind on callback, same error on the same line as HTTP
someMethodsThatCallHTTPCall() {
return Observable.create { observer in
HTTP.call('path', Meteor.bindEnvironment((err, res) => {
// Some processing
}))
}
}
This produce error on the Meteor.bindEnvironment
call
someMethodsThatCallHTTPCall() {
return Observable.create(observer => {
const callback = Meteor.bindEnvironment((err, res) => {
// Some processing
})
HTTP.call('path', callback)
}
}
This also produce the same error
someMethodsThatCallHTTPCall() {
return Observable.create(observer => {
Meteor.bindEnvironment(() => {
HTTP.call('path', (err, res) => {
// Some processing
})
})
}
}
I’ve also tried the wrapAsync
variants and ended up the same
Can anyone help me on this? Or it’s just that I’m not supposed to use RxJS with Meteor on the server side at all?
NOTE: This happened when there’s 2 subsequent call related to to meteor as-in
theFirstFunction() {
return Observable.create(observer => {
// Some async processing that yields element
}).do(o => this.saveData(o))
}
saveData(_ o: any) {
// Data here is actually Meteor's Mongo Collection, but it went fine here
Data.rawCollection.update({}, o)
}
someMethodsThatCallHTTPCall() {
// The implementation as i've mention above
}
functionThatGetsCalled() {
this.otherObservable().pipe(
tap(() => {}),
catchError(() => anotherObservable()),
catchError(() => theFirstFunction())
).flatMap(this.someMethodsThatCallHTTPCall) // << here's the problematic functio
}
// Some where else in the code
functionThatGetsCalled().subscribe()
Much obliged.