我刚刚开始使用 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) 我试图多次进行一次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完成循环然后返回数组?
谢谢!