当有人单击按钮时,我同时使用 for 循环发出 2 个请求。然后我在他们的个人资料中发布一条消息;假设消息如下:
var my_array=["Hi i am jason", "I am feeling great today"];
上面是数组,然后我使用 for 循环更新状态,所以首先它循环访问第一条消息,然后循环第二条消息。
当我提出此请求时,这 2 条消息会同时在其个人资料上更新(可能会延迟一些毫秒)。我想要的是这 2 条消息之间的 2s 延迟(间接我想要 for 循环索引之间的延迟)。
因此,当我单击该按钮时,第一条消息应立即更新,第二条消息应在 2 秒后更新。
我怎样才能做到这一点?
您可以使用 setTimeout: 在 JavaScript 中创建延迟:https://developer.mozilla.org/de/docs/Web/API/WindowTimers/setTimeout
例如:
window.setTimeout(function() {
//do your second API call
}, 2000); //2 seconds delay
解决此问题的一种方法(未经测试,但您应该明白这一点):
var currentMessageId = 0;
function doAPICall() {
//do API call with my_array[currentMessageId]
currentMessageId++;
if (currentMessageId < my_array.length) {
window.setTimeout(doAPICall, 2000); //2 seconds delay
} else {
//done
}
}
您还可以将整个代码封装在一个函数中,以便可以在单击按钮时调用它。或者只需在else
块中将当前消息 ID 参数设置为零。
顺便说一句,根据平台策略,不允许预填充消息。用户必须自己编写每条消息。