有个关于js的问题,大家帮忙看看
发布于 8 年前 作者 hc2014 3403 次浏览 最后一次编辑是 6 年前 来自 问答

是一个别人写的模块中的代码,想不明白,代码我太多 贴某一个片段的话也不好找问题,我把链接贴出来,大家帮忙看看 点这里 问题是这样的: 我再一个请求地址上写了

var smb2Client = new SMB2({
		share: '',
		domain: 'WORKGROUP',
		username: '',
		password: ''
	});
	smb2Client.readdir('', function(err, files) {
		var json = "";
		json += "{";
		json += '"total":1,';
		json += '"rows":';
		json += "[";
		console.log(files)
		for (var i in files) {
			json += "{";
			json += "\"filename\":\"" + files[i] + "\""
			json += "},";
		}
		json = json.substr(0, json.length - 1)
		json += "]";
		json += "}";

		res.send(json);
	});

我的理解是 每一次请求都会重新创建一个smb2Client对象, 我第一请求的话是没问题的,但是第二次的话socket链接就关闭了,多次调试以后再

SMB2Connection.requireConnect = function(method){
  return function(){
    var connection = this;
    var args = Array.prototype.slice.call(arguments);
    connect(connection, function(err){
      // process the cb
      var cb = args.pop();
      cb = scheduleAutoClose(connection, cb);
      args.push(cb);

      // manage the connection error
      if(err) cb(err);
      else method.apply(connection, args);
    });
  }
}

中connect函数不执行, 我不懂的问题有两个: 第一个是:为什么这里的代码第二次不执行了 第二个是:function(){ return function(){ alert(0) } }这种写法 的意义 我是真不懂, 还请各位帮忙讲解讲解!

2 回复

为何无人帮我解答?继续顶!

第一个问题,因为不清楚,所以无法解答- -(scheduleAutoClose函数有点意思); 第二个问题,请查看内容全面的JavaScript书籍,或者@朴灵 的《深入浅出NodeJS》,都有关于这方面的解释。这里return的是一个函数,并且return了之后还能执行。因为函数在js里就是个对象,你把那个函数整体当做一个变量来想就对了,不过里面还有重要内容,比如闭包等。需要转变下思路- -

回到顶部