-1

我需要在循环中向外部服务器发出 get 调用请求,但问题是在循环中调用 all 会导致速率限制,所以我只想每 5 分钟或 10 次左右在循环内进行调用,是否有可以帮助实现这一目标的方式。这是我的代码:

    const util = require('util');

const StravaClientService = require("../../strava/client.service");
const StravaActivityService = require("../../strava/activity.service");
const _ = require("underscore");
const fs = require("fs");
const AWS = require("aws-sdk");
const ids = require("underscore");
const data = require("underscore");


AWS.config.update({
    region: "us-east-1",
});
var docClient = new AWS.DynamoDB.DocumentClient();

module.exports = (router) => {
    router.get("/streams/:id", async (req, res, done) => {
        const userc = req.user;
        const access_token = userc.access_token;

   const ids = [4401422821,
       4401416494,
       4401413107,

       ]
        const stravaClient = StravaClientService.getClient(access_token);
        const activityService = StravaActivityService(stravaClient);
        //
         var params = {
            TableName:"run-id",
             Key: {
                 "id": userc.stravaId,
            }

         };





        docClient.get(params, function(err, data) {
            if (err) {
                console.log("Error", err);
            } else {
                console.log("Success", data.Item.json);
                ids.map(( id ) =>  setTimeout(activityService.streamActivity,5000,id))//data.Item.json

            }
        });
4

3 回答 3

1

基本上,setInterval在您的场景中就足够了。但是,您可以尝试使用node-schedule来帮助管理您的 cron 作业。

于 2021-07-01T08:33:23.937 回答
0

使用索引来抵消?

ids.map(( id, index ) =>  setInterval(()=>activityService.streamActivity(id),(5+index) * 60000))//data.Item.json
于 2021-07-01T08:49:47.220 回答
0

利用setInterval

setInterval(() => {
  ids.map(( id ) =>  setTimeout(activityService.streamActivity,5000,id))
}, 5000); \\ for 5 minutes
于 2021-07-01T08:29:20.170 回答