按特定顺序在Trello上创建卡片

时间:2015-03-23 17:36:13

标签: javascript jquery trello

我使用Trello client.js库在Trello列表中创建一些卡片,通过循环表格中的行。但是,按顺序创建卡片非常重要。现在,我的代码看起来像这样:

$("#list > tbody > tr").each(function() {
  $item = "Item: "+$(this).children('td').append(' ').text();
  Trello.post("cards", { name: $item,  idList: "myID"});
});

这可以很好地创建所有卡片;但是,它们并不总是以正确的顺序创建。这并不奇怪,因为Trello.post函数是异步的,因此调用按顺序生成,但可能在不同的时间内完成。

任何想法如何解决?看起来我需要阻止,直到每次通话结束,但我不太确定如何做到这一点。有任何一般或jquery方式吗?我可以为每个调用指定一个成功函数,所以看起来我也可以按顺序递减,但不太确定如何执行此操作,尤其是在使用每个函数时。

1 个答案:

答案 0 :(得分:2)

我可以看到两个选项。您可以串行拨打电话,也可以使用pos选项设置订单。

系列调用:我建议使用像async这样的库,这样做很简单:

async.eachSeries($("#list > tbody > tr"), function(item, cb) {
  var title = "Item: "+$(item).children('td').append(' ').text();
  Trello.post("cards", { name: $item,  idList: "myID"}, cb);
}, function() {
  // Done!  Do anything that needs to happen last here.
});

pos:卡片按其pos值排序;它默认为当前最后一张卡的pos + 1024,但你可以设置它以确保正确的顺序:

var pos = 1024;
$("#list > tbody > tr").each(function() {
  $item = "Item: "+$(this).children('td').append(' ').text();
  Trello.post("cards", { name: $item,  idList: "myID", pos: pos});
  pos += 1024;
});