0

枪 0.8.9

我想“承诺”.put(cb)方法,并注意到如果作为数据传递,回调cb永远不会被触发。null

很难控制节点选择。例如,如果删除了节点属性,并且我只想选择具有属性的节点。我不确定.put(null)删除的属性。

查看下面的代码,通知dino removed未触发的回调。

var gun = new Gun();
var park = gun.get('park');

var velociraptor = park.get('dino/velociraptor').put({
  statistics: {
    speed: 17,
    intelligence: 21,
    force: 11
  }
}, function (ack) {
  console.log('add dino', ack);
});

park.get('dino/velociraptor').put(null, function (ack) {
  console.log('remove dino', ack);
  alert('You have removed the velociraptor from the park!');
});
<script src="https://rawgit.com/amark/gun/master/gun.js"></script>

4

1 回答 1

1

我对 Gun 一无所知,但这可能是处理这种情况的一种方法:

Gun.prototype.pput = function(arg){
    return new Promise((resolve, reject) => {
          this.put(arg, resolve);
          if (arg === null) resolve();
    })        
}

然后 Gun.pput,而不是 Gun.put,将返回一个承诺。

于 2017-11-07T15:16:00.537 回答