English 中文(简体)
我如何能够在Node.js中 handle忙地处理back问题?
原标题:How can I handle a callback synchrnously in Node.js?

Im利用Redis为我保存的记忆模型制作身份证。 Redis客户需要对INCR的指挥系统进行查询,这意味着该代码像样。

client.incr( foo , function(err, id) {
  ... continue on here
});

问题在于,我已经撰写了该附件的其余部分,期望着<代码>incr。 呼吁冷静和公正地归还身份证,以便我能够使用它。

var id = client.incr( foo );

我之所以要解决这一问题,是因为,直到现在,我才以简单封闭的反功能来纪念身份证。

var counter = (function() {
  var count = 0;
  return function() {
    return ++count;
  }
})();

简化测试和一般设置。

这是否意味着我的用意有缺陷,我需要改写,以期望产生身份识别器时会遇到挫折? 或者说,是否有什么简单的方法能够使呼吁同步进行?

最佳回答

Node.js的精髓是async I/O Library(有纸面)。 因此,从定义上看,那里没有一刀切的,你应当改写你的 app。

问题回答

这是一种痛苦的范畴,但你必须做的是,你在反之之后的逻辑已经变成了一种功能,并且从红色的警示中说。 如果是这样的话:

var id = get_synchronous_id();
processIdSomehow(id);

你们需要做这样的事情。

var runIdLogic = function(id){
  processIdSomehow(id);
}

client.incr( foo , function(err, id) {
  runIdLogic(id);
});

你们需要适当的错误检查,但像你那样做。

Node(例如TameJS)有两层连续的节目,可以帮助你做些什么,但那些通常做的是重复的或像这样的事情:如果你想要使用这些节目,你必须决定如何安慰。

@Sergio在答复中简要地讲了这一点,但我想再写一点一点一点扩大的答复。 no子是一种非同步设计。 它只靠一线,这意味着,为了保持快速,同时处理许多行动,所有阻挡电话的回落价值都必须受到警惕,以便同步运行。

这并不意味着不可能发出同步的呼吁。 他们是,也是对你如何信任第三党的gin子的关切。 如果某个人决定在其表面上写一则话,那就会听从这一呼吁,哪里甚至可能是内部的,而且不会在他们中间暴露。 因此,它会阻碍你们的全心。 如果Redis花了大量时间来回去,然后乘以可能获得同一惯例的客户数量来考虑可能发生的情况。 整个逻辑已经编成序,它们都等待着。

在回答你的最后一个问题时,你不应努力采取阻挡办法。 这似乎是一种简单的解决办法,但恰恰是为了抵消失败的好处。 j 首先。 如果你在同步设计工作流程中更加舒适,你可能想考虑另一种框架,这种框架就是这样设计的(有线人)。 如果你想要坚持 no,则改写你现有的逻辑,使之符合背风。 从我所看到的法典实例来看,它倾向于把一套功能视为“回击”等,直到它能够从这种令人厌恶的僵局中恢复。

申请国通常作为物体通过。 我要做的是:

var state = {}

client.incr( foo , function(err, id) {
  state.id = id;
  doSomethingWithId(state.id);
});

function doSomethingWithId(id) {
  // reuse state if necessary
}

它只是一种不同的做事方式。





相关问题
Asynchronous data loading in Entity-Framework?

Did anyone hear about asynchronous executing of an EF query? I want my items control to be filled right when the form loads and the user should be able to view the list while the rest of the items ...

Does PHP support asynchronous programming?

I m new to PHP. I am familiar with ASP.NET which support asynchronous programming. That is, if one request needs to do some I/O job. It is suggested to program the web page with BeginProcess/...

How to cancel an asynchronous call?

How to cancel an asynchronous call? The .NET APM doesn t seem to support this operation. I have the following loop in my code which spawns multiple threads on the ThreadPool. When I click a button on ...

What can cause select to block in Python?

Here s a snippet of code I m using in a loop: while True: print loop rlist, wlist, xlist = select.select(readers, [], [], TIMEOUT) print selected # do stuff At a certain point, ...

热门标签