Javascript 在node.js api中处理多个客户端
找不到答案,所以我在这里问- 我正在node.js(6.2.0)中编写一个API,在为多个客户端提供服务时遇到了一个问题 该守则是—Javascript 在node.js api中处理多个客户端,javascript,node.js,Javascript,Node.js,找不到答案,所以我在这里问- 我正在node.js(6.2.0)中编写一个API,在为多个客户端提供服务时遇到了一个问题 该守则是— "use strict"; const express = require('express'); const router = express.Router(); const FileRetriever = require('./FileRetriever'); function doSomething(uid, callback) { let
"use strict";
const express = require('express');
const router = express.Router();
const FileRetriever = require('./FileRetriever');
function doSomething(uid, callback) {
let finalCount = 0;
let cb = null;
FileRetriever.foo(uid, function (err, data) {
finalCount = data.length;
cb = callback(finalCount);
data.forEach(function(obj, i) {
doSomething2(obj, cb);
});
})
}
function doSomething2(_obj, cb) {
let fn = null;
FileRetriever.bar(_obj, function(err, data){
cb(null, data);
})
}
router.route('/foo').get(function (req, res) {
let uid = req.query.uid;
function callback(_finalCount) {
let counter = 1;
let finalCount = _finalCount;
let output = [];
return function(err, data) {
output.push(data);
if (output.length === (finalCount -1)) {
res.send(output);
}
}
}
doSomething(uid, callback);
});
显然,它比那个复杂一点,但这是简化版
请帮助我理解我遗漏了什么-
这就是我对它应该如何工作的想法-
用户使用参数uid进入/foo
。
他到达该路线,并为该用户调用doSomething
。
在doSomething
中,我首先获取调用回调
的初始数据,它返回一个自己的函数,现在称为cb
当cb
被传递到doSomething2
并在那里被调用时,它仍然在同一个堆栈下,在同一个用户下
我运行了几个测试,其中一个用户应该返回长度为6的输出,另一个用户返回长度为100的输出
当我为每个用户运行此代码一次时,一切正常,但如果两个用户同时调用路由,则长度不是[6100](但它们总是相同的)
我做错了什么?
它应该有用
希望我说的很清楚,谢谢。您应该创建一个单独的文件,导出您想要使用和需要的函数,就像您需要的express一样。然后需要在route.get函数中调用这些函数。我相信您现在体验到的是,函数是全局设置的,一个用户覆盖了其他用户函数的值。您应该创建一个单独的文件,导出您想要使用的函数,并像您需要的express一样需要它。然后需要在route.get函数中调用这些函数。我相信您现在体验到的是,函数是全局设置的,一个用户覆盖了其他用户函数的值