有个关于js的问题,大家帮忙看看
是一个别人写的模块中的代码,想不明白,代码我太多 贴某一个片段的话也不好找问题,我把链接贴出来,大家帮忙看看 点这里 问题是这样的: 我再一个请求地址上写了
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里就是个对象,你把那个函数整体当做一个变量来想就对了,不过里面还有重要内容,比如闭包等。需要转变下思路- -