将 requestjs 响应分配给变量
Assign requestjs response to variable
如何将 request.get('http://someurl/file.json', function(err, response, body) {})
的主体分配给变量?
例如:
file.json
{
"Name1": {
"prop": "value"
},
"Name2": {
"prop": "value"
}
}
app.js
var json = request.get(http://localhost/file.json);
json = JSON.parse(json);
console.log(json["Name1"].prop);
提前致谢:)
var myvariable1;
request.get('http://someurl/file.json', function(err, response, body) {
myvariable1=response.Name1.prop;
})
在回调完成之前,正文不可用。我不认为有任何 shorthand 允许你想要的回调。但是,有一个 shorthand 用于承诺。您可以使用 bluebird npm 模块来尝试和承诺这一点。然后你可以做... myvar = request.get('path'); .... myvar 然后将包含已解决的 promise ON 结果(不是之前)的结果 - 这肯定在 AngularJS 环境中工作,并且 prob 也可以在纯 Node 中工作 - 希望能提供一些思考。
您也可以使用类似 q 库的东西来承诺这一点(我相信现在默认情况下在 Node 中)。
function getMyData() {
var def=q.defer();
request.get('http://someurl/file.json', function(err, response, body) {
def.resolve(response.Name1.prop);
})
return def.promise();
}
// myvar will have the result of the resolution on resolution (not before)
var myvar = getMyData();
// to test this approach you might want to use a settimeout to repeatedly dump the value of myvar every X ms.
// Again this approach deffo works in Angular and hopefully works in Node too.
更糟糕的情况,如果这不起作用,那么您可以求助于...
var myvar;
getMyData().then(function(data) {
myvar = data;
));
这让你回到了开始的地方哈哈 :)
PS 为了简单起见,我忽略了使用 promise CATCH 块的错误处理
javascript 中没有 JSON-object。你可以做的是将数据解析成一个数组,像这样
var json = request.get(http://localhost/file.json);
var parsed = JSON.parse(json);
var arr = [];
for(var i in parsed){
arr.push(parsed[i]);
}
如何将 request.get('http://someurl/file.json', function(err, response, body) {})
的主体分配给变量?
例如:
file.json
{
"Name1": {
"prop": "value"
},
"Name2": {
"prop": "value"
}
}
app.js
var json = request.get(http://localhost/file.json);
json = JSON.parse(json);
console.log(json["Name1"].prop);
提前致谢:)
var myvariable1;
request.get('http://someurl/file.json', function(err, response, body) {
myvariable1=response.Name1.prop;
})
在回调完成之前,正文不可用。我不认为有任何 shorthand 允许你想要的回调。但是,有一个 shorthand 用于承诺。您可以使用 bluebird npm 模块来尝试和承诺这一点。然后你可以做... myvar = request.get('path'); .... myvar 然后将包含已解决的 promise ON 结果(不是之前)的结果 - 这肯定在 AngularJS 环境中工作,并且 prob 也可以在纯 Node 中工作 - 希望能提供一些思考。
您也可以使用类似 q 库的东西来承诺这一点(我相信现在默认情况下在 Node 中)。
function getMyData() {
var def=q.defer();
request.get('http://someurl/file.json', function(err, response, body) {
def.resolve(response.Name1.prop);
})
return def.promise();
}
// myvar will have the result of the resolution on resolution (not before)
var myvar = getMyData();
// to test this approach you might want to use a settimeout to repeatedly dump the value of myvar every X ms.
// Again this approach deffo works in Angular and hopefully works in Node too.
更糟糕的情况,如果这不起作用,那么您可以求助于...
var myvar;
getMyData().then(function(data) {
myvar = data;
));
这让你回到了开始的地方哈哈 :)
PS 为了简单起见,我忽略了使用 promise CATCH 块的错误处理
javascript 中没有 JSON-object。你可以做的是将数据解析成一个数组,像这样
var json = request.get(http://localhost/file.json);
var parsed = JSON.parse(json);
var arr = [];
for(var i in parsed){
arr.push(parsed[i]);
}