Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.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_Backbone.js_Asynchronous - Fatal编程技术网

Node.js/主干网是否异步?

Node.js/主干网是否异步?,node.js,backbone.js,asynchronous,Node.js,Backbone.js,Asynchronous,在我的node.js主干应用程序中,我正在迭代集合,并在页面加载时对每个模型执行计算。每个函数获取不同的变量来执行计算,并通过restful api保存模型。现在我的想法是,下面的代码在页面加载和资源方面太“昂贵”。但这是异步处理的,还是将两者合并到一个函数中会更好 render: function() { this.trigger('calculateSpread'); this.trigger('checkClose'); } calculateSpread: function

在我的node.js主干应用程序中,我正在迭代集合,并在页面加载时对每个模型执行计算。每个函数获取不同的变量来执行计算,并通过restful api保存模型。现在我的想法是,下面的代码在页面加载和资源方面太“昂贵”。但这是异步处理的,还是将两者合并到一个函数中会更好

render: function() {
  this.trigger('calculateSpread'); 
  this.trigger('checkClose'); 
}

calculateSpread: function() {
  stocks.models.forEach(function(model) {
    var x = this.model.get('')....
    .....calculations
    this.model.save()
}

checkClose: function() {
  stocks.models.forEach(function(model) {
    var x = this.model.get('')....
    .....calculations
    this.model.save()
}

是,触发事件是同步的。资料来源:

trigger: function(name) {
  if (!this._events) return this;
  var args = slice.call(arguments, 1);
  if (!eventsApi(this, 'trigger', name, args)) return this;
  var events = this._events[name];
  var allEvents = this._events.all;
  if (events) triggerEvents(this, events, args);
  if (allEvents) triggerEvents(this, allEvents, arguments);
  return this;
},
导入功能是triggerEvents,它看起来像一个经过优化的调度程序。请注意,它们都在调用
.call()
.apply()
,因此回调将在控件返回调用方之前完成

var triggerEvents = function(obj, events, args) {
    var ev, i = -1, l = events.length;
    switch (args.length) {
    case 0: while (++i < l) (ev = events[i]).callback.call(ev.ctx);
    return;
    case 1: while (++i < l) (ev = events[i]).callback.call(ev.ctx, args[0]);
    return;
    case 2: while (++i < l) (ev = events[i]).callback.call(ev.ctx, args[0], args[1]);
    return;
    case 3: while (++i < l) (ev = events[i]).callback.call(ev.ctx, args[0], args[1], args[2]);
    return;
    default: while (++i < l) (ev = events[i]).callback.apply(ev.ctx, args);
    }
};
var triggerEvents=函数(对象、事件、参数){
var ev,i=-1,l=events.length;
开关(参数长度){
案例0:while(++i

因此,处理程序是否“昂贵”取决于处理程序代码本身。

我认为将它们结合起来会更好,这样就不会为每个模型节省两次,也会更干净。这应该同步进行,除非计算部分执行异步工作(ajax)

render: function() {
  this.trigger('calculate'); 
}

calculate: function () {
    stocks.models.forEach(function(model) {
        this.calculateSpread(model);
        this.checkClose(model);
        this.model.save()
    }
}

calculateSpread: function(model) {
    var x = model.get('')....
    ...calculations
}

checkClose: function(model) {
    var x = model.get('')....
    .....calculations
}