有没有办法等待订阅呼叫返回的第一个值?
例如,在下面:
set main to "https://meet.google.com/"
set extra to "xxx-xxxx-xxx"
do shell script "open " & main & extra & " -a Chrome"
异步函数将返回val的Promise,但我也想订阅并获取一个数据成员值,该值将在可观察到的myObs $发出新值时进行更新。
我的问题:是否有一个返回Promise的方法,而不用first()调用来调用该行,而只是等到我第一次在Subscribe中得到结果时?
答案 0 :(得分:0)
这里并没有真正的理由,因为调用方无论如何都要等待它或使用.then(),因此该方法不需要异步。您可以将其重写为:
getValue(...) {
myObs$ = ...
myObs$.subscribe(val => {
this.value = val
})
return myObs$.pipe(first()).toPromise()
}
这将保留您的内部订阅并允许其继续接收值,而getValue
的调用者将收到第一个发出的值的承诺。