按特定顺序在Trello上创建牌

Creating cards on Trello in a particular order

本文关键字:创建 Trello 定顺序      更新时间:2023-09-26

我正在使用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的方法吗?我可以为每个调用指定一个成功函数,所以我似乎也可以向下递归,但不太确定如何做到这一点,尤其是在使用each函数时。

我可以看到两个选项。您可以串行调用,也可以使用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;
});