Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果node.js应用程序的客户端都共享同一个事件队列,node.js如何跟踪哪些上下文事件所属?_Node.js - Fatal编程技术网

如果node.js应用程序的客户端都共享同一个事件队列,node.js如何跟踪哪些上下文事件所属?

如果node.js应用程序的客户端都共享同一个事件队列,node.js如何跟踪哪些上下文事件所属?,node.js,Node.js,下面是一个例子来说明我所说的: var BlueBirdPromise = require('bluebird'); function getFriendsList(user_id) { //return Promise to a list of this user's friends that gets fulfilled after doing some io with a database }; function getFriendRequestsList(user_id){ /

下面是一个例子来说明我所说的:

var BlueBirdPromise = require('bluebird');

function getFriendsList(user_id) {

//return Promise to a list of this user's friends that gets fulfilled after doing some io with a database

};

function getFriendRequestsList(user_id){

//return Promise to a list of this user's friend requests that gets fulfilled after doing some io with a database  

};

router.get('/homepage', function (req, res) {

    BlueBirdPromise.coroutine(function* () {

        var lists = yield BlueBirdPromise.props({

            friends_list: getFriendsList(req.user_id),
            friend_requests_lists: getFriendRequestsList(req.user_id)

        });

        return lists;

    })()
        .then(function (lists) {

            res.render('homepage', {

                lists: lists

            });

        })
        .catch(function (error) {

            console.log(error);

            res.render('homepage', {

                lists: { friends_list: [], friend_requests_list: [] }

            });

        });



});
假设事件按以下顺序发生:

在时间t=1时,ClientA请求索引资源,该请求被置于事件队列中

在时间t=2时,ClientB请求索引资源,该请求被置于事件队列中

在时间t=3时,事件循环运行

在时间t=4时,ClientA的好友列表的io被发送到数据库

在时间t=5时,ClientA的好友请求列表的io被发送到数据库

在时间t=6时,ClientB的好友列表的io被发送到数据库

在时间t=7时,ClientB的好友请求列表的io被发送到数据库

在时间t=8时,ClientA的好友列表的io已准备就绪,并放置在事件队列中

在时间t=9时,ClientB的朋友列表的io已准备就绪,并放置在事件队列中

在时间t=10时,ClientB的朋友请求列表的io已准备就绪,并放置在事件队列中

在时间t=11时,ClientA的朋友请求列表的io已准备就绪,并放置在事件队列中

在时间t=12时,事件队列从前到后如下所示:

ClientA FriendsList Ready事件->客户端B FriendsRequestsList Ready事件->客户端B FriendsList Ready事件->客户端A FriendsRequestsList Ready事件

在时间t=13时,事件循环运行前端事件

在时间t=14时,朋友列表与ClientA的朋友一起设置

在时间t=16时,事件循环运行下一个前端事件

在时间t=16时,friend_requests_列表与ClientB的friend requests一起设置

在这个例子中,我的问题是,在这一点上,node如何知道不返回ClientA,ClientA的好友列表 客户B的好友请求列表

即使在t=6和7时,这些请求如何不覆盖t=4和5时的请求

我想我很难理解为什么引擎盖下没有轻量级流程可以创建 分开堆叠