小编Jes*_*iga的帖子

多个 Apache Flink 窗口验证

我刚刚开始使用 Apache Flink 进行流处理,问题是我收到了一个看起来像这样的 Json 流:

{

  token_id: “tok_afgtryuo”,

  ip_address: “128.123.45.1“,

  device_fingerprint: “abcghift”,

  card_hash: “hgtyuigash”,

  “bin_number”: “424242”,

  “last4”: “4242”,

  “name”: “Seu Jorge”

}
Run Code Online (Sandbox Code Playgroud)

并被问及我是否可以满足以下业务规则:

  • 如果过去 10 秒内此 IP 的令牌数量 > 5,则拒绝

  • 如果最后一分钟此 IP 的令牌数量 > 15,则拒绝

  • 如果过去一小时此 IP 的令牌数量 > 60,则拒绝

我创建了 2 个类,main当我创建一个实例来调用Window具有不同参数的函数以避免重复代码时,类:

主程序

    public static void main(String[] args) throws Exception {

        StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
        //This DataStream Would be  Converting the Json to a Token Object
        DataStream<Token> baseStream =
                env.addSource(new SocketTextStreamFunction("localhost",
                        9999,
                        "\n",
                        1)) …
Run Code Online (Sandbox Code Playgroud)

java apache-flink flink-streaming

5
推荐指数
0
解决办法
114
查看次数

等待api调用完成,然后返回结果Nodejs

我试图多次进行一次api调用,方法是:

const myPromise = new Promise(function(resolve, reject) {
  // code here
  for (let i = 0; i < recommendedMovies.length; i++) {
    tmdb.genre.movies(
      recommendedMovies[i].id,
      randomNumber,
      (err, response) => {
        if (!err) {
          finalMovies.push(response.results);
          resolve(finalMovies)
        } else {
          reject('error')
        }
      }
    );
  }     
});
Run Code Online (Sandbox Code Playgroud)

如您所见,我将每个调用结果推送到名为finalMovies的数组中,然后尝试按以下方式返回结果:

myPromise
  .then(function whenOk(response) {
    res.json(response)
  })
  .catch(function notOk(err) {
    console.log(err);
  });
Run Code Online (Sandbox Code Playgroud)

问题是我只在第一次调用时得到数组。

我该如何更改代码,以便可以等待myPromise完成循环然后返回数组?

谢谢!

javascript asynchronous node.js express

1
推荐指数
1
解决办法
512
查看次数