const http = require('http'); var mch_arr = []; const options = { hostname: 'localhost.manage.donotcall.com.cn', port: 80, path: '/ZhouBaoApi/GetConditionMch?start_time=20230522&end_time=20230528&avg_num=3000000', method: 'GET' }; const req = http.request(options, (res) => { res.on('data', (chunk) => { var result = chunk.toString(); var result = JSON.parse(result); for (let i = 0; i < result.data.length; i++) { const item = result.data[i]; mch_arr.push(item.mch_id) console.log('mch_id:', item.mch_id); console.log('avg_num:', item.avg_num); } }); }); req.on('error', (error) => { console.error(error); }); req.end();无法将item.mch_id放入mch_arr
时间: 2024-04-26 11:24:29 浏览: 94
可能出现这种情况是因为mch_arr的作用域问题。请确保mch_arr在当前作用域中已经定义,并且没有被重新赋值或者清空。你可以在for循环外部定义mch_arr数组,然后在for循环内部使用push方法将item.mch_id添加到数组中。另外,也可以在控制台输出mch_arr看看是否正确添加了item.mch_id。
相关问题
function getMchArr(){ const options = { hostname: 'localhost.manage.donotcall.com.cn', port: 80, path: '/ZhouBaoApi/GetConditionMch?start_time=20230522&end_time=20230528&avg_num=3000000', method: 'GET' }; var mch_arr = []; const req = http.request(options, (res) => { res.on('data', (chunk) => { var result = chunk.toString(); var result = JSON.parse(result); for (let i = 0; i < result.data.length; i++) { const item = result.data[i]; mch_arr.push(item.mch_id) console.log(1111) } }); }); req.on('error', (error) => { console.error(error); }); req.end(); console.log(222) return mch_arr; }1111还没打印出来就打印了222
这段代码是在 Node.js 环境下发起一个 HTTP GET 请求,并在请求的响应数据中提取出其中的 `mch_id` 字段,将这些字段存入一个数组 `mch_arr` 中。然而,由于 Node.js 中的异步机制,`res.on` 中的回调函数是在请求数据返回后才执行的,因此在这个函数中打印的 `1111` 是最后才会输出的。而在请求数据的过程中,代码会继续往下执行,因此在请求还未返回时就已经输出了 `222`。因此,这段代码的执行顺序是先输出 `222`,然后等待请求返回后输出多个 `1111`。
阅读全文