javascript(node.js)初心者です。
APIの実行結果をコールバックで受け取り、パースした上で、グローバル変数に反映したいと考えています。
下記スニペットのようなやり方だとだと、コールバック外のobjは、callback時のObject.assignが反映されていません。
callbackを抜けた後で受け取るのは、非同期という特性上難しいのだというのはわかったのですが、
callbackの処理内でグローバル変数 var objを書き換える方法はないのでしょうか?
javascript
1"use strict"; 2var obj = {hoge: "hoge"}; 3 4getAPIData(request,obj, function(result,obj){ 5 //処理内容 6 console.log(obj);//{hoge: "hoge"}; 7 Object.assign(obj,{result: result}) 8 console.log(obj);//{hoge: "hoge", result: "result"} 9}); 10 11console.log(obj);//{hoge:"hoge"} 12 13function getAPIData(request,obj, callback) { 14 //API実行 15 var https = require('https'); 16 var options = { 17 hostname: 'example.com', 18 port: 443, 19 path: '/', 20 method: 'GET' 21 }; 22 23 var req = https.request(options, (res) => { 24 console.log('statusCode:', res.statusCode); 25 console.log('headers:', res.headers); 26 27 res.on('data', chunk => { 28 result = result +chunk; 29 }); 30 res.on('end', () => { 31 var response = parseData(); 32 callback(response); 33 }); 34 }); 35 req.on('error', (e) => { 36 console.error(e); 37 }); 38 req.end(); 39} 40 41function parseData(result) { 42 //API実行結果パース 43 return parsedResult; 44}
回答1件
あなたの回答
tips
プレビュー