javascript - 如果传递 null 则不会调用 Put 回调

标签 javascript node.js gun

枪0.8.9

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

这使得控制 Node 选择变得困难。例如,如果 Node 属性被删除,并且我只想选择具有属性的 Node 。我不确定 .put(null) 是否删除了属性。

看下面的代码,通知dinoremoved的回调没有被触发。

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>

最佳答案

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

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

Gun.pput(而不是 Gun.put)将返回一个 promise 。

关于javascript - 如果传递 null 则不会调用 Put 回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47161179/

相关文章:

javascript - 有没有可以提高 JavaScript 执行性能的库?

javascript - 如何使用 google-cloud 和 node js 从 firebase 存储中检索图像并将其显示在网页上

gun - 如何将数据作为对等方放入服务器端的gundb中

javascript - 如何将标签放置在拆分包装气泡图上的系列旁边?

javascript - Blackberry 10 级联来自 javascript 的 ajax 调用总是执行错误函数

javascript - JQuery - 点击/链接处理程序出现问题

javascript - Node.js 游戏服务器同时运行多个游戏

javascript - socket.io 和 Node 的 Net 模块的区别

javascript - 如何使用gundb存储图像/视频文件?