首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有多重延迟的YDN-DB

具有多重延迟的YDN-DB
EN

Stack Overflow用户
提问于 2013-09-30 06:21:31
回答 1查看 361关注 0票数 1

我试图使用jquery $.when中的多重延迟,但到目前为止还没有成功,这是我的代码:

代码语言:javascript
复制
var req = $.when(db.count('items'),db.values('items'),db.get('config', 1));

req.done(function(count,r,config) {
  var currency = config.currency;
  if(count > 0){
    var n = r.length;
    for (var i = 0; i < n; i++) {                   
      var id    = r[i].id;
      var itemId = r[i].itemId;
      console.log('ID: '+id+' itemID: '+itemId+' Currency: '+currency);
    }
  }
});

我的样本不管用,所以希望你们能帮我,我到处找解决方案。谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-01 04:21:53

我明白了。我将看看如何实现jquery延迟列表。虽然ydn承诺有donefailthem等,但它不是$.Deferred实例.需要采用适配器方法。

目前,请按以下方式使用事务:

代码语言:javascript
复制
var results = {};
var tx_req = db.run(function(tx_db) {
  tx_db.count('items').done(function(x) {
    results.count = x;
  });
  tx_db.values('items').done(function(x) {
    results.values = x;
  });
  tx_db.get('config', 1).done(function(x) {
    results.config = x;
  });
}, ['items', 'config'], 'readonly');

req.done(function() {
  var count = results.count;
  var r = results.values;
  var config = results.config;
  var currency = config.currency;
  if(count > 0){
    var n = r.length;
    for (var i = 0; i < n; i++) {                   
      var id    = r[i].id;
      var itemId = r[i].itemId;
      console.log('ID: '+id+' itemID: '+itemId+' Currency: '+currency);
    }
  }
  results = null;
});

这有点混乱,但效率更高,因为这三个查询都在一个事务中运行。

编辑:

只需要添加方法,返回具有donefailprogress函数的对象。应该是可行的,没有太多的开销。基本上,您可以做一个适配器,例如:

代码语言:javascript
复制
var wrap = function(req) {
  req.promise = function() {
    return req; // Note: req has done, fail and progress functions.
    // however, jquery api demand promise to return a new deferred. 
  }
  return req;
}
$.when(wrap(db.count('items')),wrap(db.values('items')),wrap(db.get('config', 1)));

这是完整代码在弹琴。

编辑:

从0.8.1版开始,承诺方法将被添加到请求对象中,不再需要包装。示例

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19087609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档