有没有相当于Func <t>或更好的,javascript中的ActionBlock?

时间:2017-06-05 01:47:17

标签: javascript jquery typescript

我试图制作潜在的几十个ajax调用,并希望将它们同时堆叠4或5,但不能同时解雇它们。在C#中,我将使用ActionBlock,并在我的委托中发送,直到我准备好然后开始执行。

所以,我试图在JavaScript中构建相同的东西,并且能够使用$ .when和数组来完成所有工作,但是我无法将委托传递给具有特定参数的函数。

我尝试过fn.apply和fn.bind,但是在尝试创建执行链时它们都会立即执行。

在c#中,签名只是:

public Push(Action|Func<T> methodToCall){...}

然后我会在$ .when

的.then处理程序中递归调用它

1 个答案:

答案 0 :(得分:0)

在jQuery中,您可以使用.queue(queueName)来设置N个同步函数或异步过程的数组,这些函数可以按顺序调用,即上一个函数返回Promise或其他值时; .promise(queueName)等待queueName数组中的所有函数被调用; .then()链接到.promise(queueName)以在queueName jQuery承诺对象完成时执行操作。

也可以在不使用jQuery的情况下编写相同的模式;使用Array.prototype.shift()Promise构造函数或其他Promise对象,以及递归或重复调度。