按特定顺序在 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;
});
我正在使用 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;
});