如何在dart中执行此jquery模式? [英] How do I do this jquery pattern in dart?

查看:270
本文介绍了如何在dart中执行此jquery模式?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图将以下javascript / jquery代码转换为dart,但我无法理解期货如何工作。

  function fnA(){
fnB()。then(function(){
// do something
}
}

function fnB(){
var ret = $ .Deferred();

_db.open(database_name).then(function(){
var defers = [];

_db.keys()。forEach(function(key_name){
var key_dfd = $ .Deferred();
defers.push(key_dfd);
_db.getByKey(key_name).then(function(data){
key_dfd.resolve(data);
});
});
$ .when defers).then(ret.resolve);
})
.fail(function(){
ret.reject();
});

return ret.promise();
}

到以下,但它似乎不工作:



(我正在为数据库使用lawndart)



< pre(=){
//这里,所有的键应该已经被删除了。 loaded
});
}

未来的fnB(){
return _db.open()。((_){
return _db.keys()。forEach key_name){
return _db.getByKey(key_name).then((String data){
// do something with data
return data;
});
});
});
}


解决方案

't test the code:

  void fnA 
fnB()。then((_){
//这里,所有的键应该已经加载了
});
}

未来的fnB(){
return _db.open()。then((_){
List< Future> futures = [];
return _db.keys()。forEach((String key_name){
futures.add(_db.getByKey(key_name).then((String data){
// do something with data
return data;
}));
}); then(()=> Future.wait(futures));
});
}


I'm trying to convert the following javascript/jquery code into dart, but I'm having problems understanding how futures work.

function fnA() {
    fnB().then(function() {
        // do something
    }
}

function fnB() {
   var ret = $.Deferred();

   _db.open(database_name).then(function() {
       var defers = [];

       _db.keys().forEach(function(key_name) {
          var key_dfd = $.Deferred();
          defers.push(key_dfd);
          _db.getByKey(key_name).then(function(data) {
              key_dfd.resolve(data);
          });
       });
       $.when(defers).then(ret.resolve);
   })
   .fail(function() {
       ret.reject();
   });

   return ret.promise();
}

I thought I could do it similar to following, but it doesn't seem to work:

(I'm using lawndart for the database)

void fnA() {
    fnB().then((_) {
        // Here, all keys should have been loaded
    });
}

Future fnB() {
    return _db.open().then((_) {
        return _db.keys().forEach((String key_name) {
             return _db.getByKey(key_name).then((String data) {
                  // do something with data
                  return data;
             });
        });
    });
}

解决方案

I made some improvments but haven't tested the code:

void fnA() {
    fnB().then((_) {
        // Here, all keys should have been loaded
    });
}

Future fnB() {
  return _db.open().then((_) {
    List<Future> futures = [];
    return _db.keys().forEach((String key_name) { 
      futures.add(_db.getByKey(key_name).then((String data) {
        // do something with data
        return data;
      }));
    }).then(() => Future.wait(futures));
  });
}

这篇关于如何在dart中执行此jquery模式?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆