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 の結果が含まれます (前ではありません)。
これを約束するために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ブロックでエラー処理を無視しました