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

Creating cards on Trello in a particular order

我正在使用 Trello client.js 库通过遍历 table 中的行在 Trello 列表中创建一些卡片。但是,按顺序创建卡片很重要。现在,我的代码如下所示:

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

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

有什么解决办法吗?似乎我需要阻塞直到每次调用结束,但我不太确定如何执行此操作。有什么通用的或 jquery 的方法吗?我可以为每个调用指定一个成功函数,所以似乎我也可以递归下去,但不太确定如何执行此操作,尤其是在使用每个函数时。

我可以看到你有两个选项。您可以按顺序执行调用或使用 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;
});