var myvariable1;
request.get('http://someurl/file.json', function(err, response, body) {
myvariable1=response.Name1.prop;
})
在回调完成之前,正文不可用。我认为回调没有任何简写方式可以满足您的需求。但是,promise 有一个简写形式。您可以使用 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 为了简单起见,我忽略了使用承诺 CATCH 块的错误处理