如何在fb api中延迟api调用

时间:2016-02-05 11:27:01

标签: javascript facebook-graph-api

当有人点击按钮时,我正在同时使用for循环发出2个请求。然后我在他们的个人资料中发布消息;说消息如下:

HAVING

上面是数组,然后我使用for循环更新状态,所以首先它遍历第一条消息,然后循环第二条消息。

当我提出此请求时,这2条消息会同时更新其个人资料(可能会延迟几毫秒)。我想要的是这2条消息之间的延迟为2秒(间接地我想要for循环索引之间的延迟)。

所以当我点击按钮时,第一条消息应该立即更新,第二条消息应该在2秒后更新。

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

您可以使用setTimeout:https://developer.mozilla.org/de/docs/Web/API/WindowTimers/setTimeout

在JavaScript中创建延迟

例如:

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块中将currentMessageId参数设置为零。

顺便说一句,根据platform policy,不允许预先填写邮件。用户必须自己编写每条消息。