gpt4 book ai didi

javascript - Promisizing Zookeeper的多重回调函数

转载 作者:太空宇宙 更新时间:2023-11-04 16:00:06 25 4
gpt4 key购买 nike

Zookeeper 提供了一个 getChildren 方法,该方法接受节点的路径并在回调中返回该节点的子节点。它还会在此过程中设置一个监视,并在触发监视时调用监视回调

getChildren(path, function(err,event){
//this is the watcher callback
},
function(err,children,stats){
//children callback
}
)

所以如果我使用bluebird的Promise.promisify来promisify这个函数。我怎么知道这个函数返回的 promise 是观察者还是 child ?

最佳答案

如果我正确理解 getChildren() 接口(interface),则最后一个回调被设计为使用子对象列表调用一次。第一个回调是观察者回调,可以无限次调用它来通知您发生的各种变化。

鉴于此,最后一个回调可能符合 promise 。第一个回调不能而且必须仍然是回调。此外,第二个回调返回多个结果(这与 promise 并不完全相符),因此您也必须使用 multiArgs.spread 来考虑这一点。 p>

所以,你可以这样做:

let getChildrenP = Promise.promisify(getChildren, {multiArgs: true});

getChildrenP(path, function(err, event) {
// watcher event occurred here
// this may get called multiple times
}).spread(function(children, stats) {
// children are available now
}).catch(function(err) {
// error here
});

关于javascript - Promisizing Zookeeper的多重回调函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42336608/

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