gpt4 book ai didi

javascript - RXJS 5 bindCallback 当回调是第一个参数时

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:59:36 24 4
gpt4 key购买 nike

我想转换一个函数:

static getCurrentPosition(geo_success, geo_error?, geo_options?)

一个可观察的。

如您所见,函数的第一个参数是成功回调。

RxJS 5 bindCallback适用于成功回调是最后一个参数的函数。

有没有办法使用bindCallbackstatic getCurrentPosition(geo_success, geo_error?, geo_options?) ?

如果不是,那么我将手动将该函数转换为 Promise,如数字 2 here

可以找到有问题的功能here

我想将其实现为一个可观察对象:

navigator.geolocation.getCurrentPosition(
(position) => {
updateRegion(position)
store.dispatch(getCurrentLocation(position))
},
error => Observable.of(getCurrentPositionRejected(error)),
{ enableHighAccuracy: true, timeout: 20000, maximumAge: 1000 }
)

我尝试实现以下答案:

    class Vepo extends Component {
componentDidMount() {
const { store } = this.context
this.unsubscribe = store.subscribe(() => { })
store.dispatch(fetchCategories())
store.dispatch(getCurrentPosition())

************implementation starts here******************************
const bound = Observable.bindCallback((options, cb) => {
if (typeof options === 'function') {
cb = options
options = null
}

navigator.geolocation.getCurrentPosition(cb, null, options)
})
let x = bound(this.getPosition)

x.subscribe(
function (x) {
console.log('Next: %s', x)
},
function (err) {
console.log('Error: %s', err)
},
function () {
console.log('Completed')
})

x.onNext()
}

getPosition(position) {
console.log(position)
return position
}

而且 console.log() 仅来自 getPosition()

最佳答案

使用重新排列的参数创建一个新函数

const bound = Rx.Observable.bindCallback((options, cb) => {
if(typeof options === 'function') {
cb = options
options = null
}

navigator.geolocation.getCurrentPosition(cb, null, options)
})

如果你想处理错误,或者使用bindNodeCallback

关于javascript - RXJS 5 bindCallback 当回调是第一个参数时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43733434/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com