使用Hapi&Async的API – 如何清空数组/在“回复”或每个新的“get”之后立即执行?

我正在构build一个小API,用于获取数据并对其执行任务(使用asynchronous),使用push将这些数据的一部分存储在数组中,然后用Hapi的reply()将其显示给客户端。

我正在寻找清空我的数组(例如使用arrayname.length = 0)服务器已发送答案的客户端。

目前的代码遵循这个逻辑:

let data = [] server.route({ method: 'GET', path: '/api/{data}', handler: function (request, reply) { async.parallel([ function(callback) { // fetch some data, work with it and then add it to our array using push data.push ({ // example data bla:'blabla', number:'10' }); callback(); }, function(callback) { // another time (...) data.push ({ bla:'blabla', number:'2' }); callback(); } ], function(err) { // This is the final callback, sort data and send it using reply data.sort(function (a, b) { return a.number - b.number }) reply(data) console.log(request.params.data) }) } }); server.start((err) => { if (err) { throw err; } console.log(`Server running at: ${server.info.uri}`); }); 

使用当前的代码,如果我刷新我的页面,数据被添加到已经存在的数据数组。

我试了好几个小时,发现回复(数据)被调用后,没有办法清空这个数组。

有没有办法做到这一点,或者我将不得不嵌套我的平行asynchronousfunctionasynchronous系列,并执行清空这种方式? (避风港已经能够成功+听起来有点过分)。

有没有一种方法可以简单地执行一些“回复”被调用或有一个新的“获取”,以便每个客户端可以只有它的请求产生的数据,而不是以前在数组中的数据?

谢谢!

我同意所有build议把数组放在处理程序中的答案。 当数组位于请求处理程序的外面时,所有通过的请求都将写入同一个数组。 即使您在处理程序逻辑结束时清除了此数组,也不能保证在下一个请求上下文中为空,因为您可以有许多请求上下文。

遵循@ piotrbienias的build议,我创build了数组内部的处理程序,而不是在我的文件的开始,每当我对我的API做一个新的请求,它都被清除,所以我不需要在回复发送后清空它。

谢谢@piotrbienias!