我试图编写一个简单的可移植函数,可以在其中传递object.property并从结果中设置其值。简单的例子:
var myFunction = function (result){
var data;
//get some data
return result = data;
};
myObject.someData;
myFunction(pass reference to key of myObject.someData here)
我想在这里传递对myObject.someData的键的引用。布朗尼也指出在这里而不是上面的行中声明。
现在为我的实际代码:
var configurations;
var oldServer;
//make a call to get details of old server here
//helper function to stream json into a variable
var streamToString = function(stream, result) {
var data = '';
var chunk;
stream.on('readable', function() {
while ((chunk=this.read()) != null) {
data += chunk;
}
});
stream.on('end', function() {
data = JSON.parse(data);
return result = data;
});
}
//declare shadowsocks as a property, so it can be passed as a param
configurations.shadowsocks;
//
streamToString(sequest.get('root@'+ oldServer[0].networks.v4[0].ip_address, '/etc/shadowsocks-libev/config.json', {
privateKey: sshKey,
readyTimeout: 20000
}, function (error, stdout) {
if (error) {
throw error;
}
}), configurations.shadowsocks
);
我知道我可以这样做:
stream.on('end', function() {
data = JSON.parse(data);
return configurations.shadowsocks = data;
});
}
但是它不是便携式的。我想使它便于携带。
您所要的东西在JavaScript中是不可能的。您可能最好的办法是同时传递要设置的对象和属性名称。例如:
function streamToString(stream, result, resultKey) {
var data = '';
var chunk;
stream.on('readable', function() {
while ((chunk=this.read()) != null) {
data += chunk;
}
});
stream.on('end', function() {
data = JSON.parse(data);
result[resultKey] = data;
});
}
然后像这样使用它:
streamToString(/*...*/, configurations, 'shadowsocks');
我还应该指出,除非您将其作为一次性任务执行,并且不在乎它何时完成,否则您应该改用使用值调用的回调,然后将属性设置为该值。打回来。这样,您将知道何时设置属性并可以使用它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句