Nodejs 回调问题
Nodejs 回调问题
为何下面的
<br>module.exports.fans = function(callback) { <br> var selectSQL = "SELECT * FROM `fans` WHERE `statu`= 0"; <br> connection.query(selectSQL,function(err, rows) { <br> if (err) throw err; <br> var op = {}; <br> var cookie =''; <br> for(var id in rows){ <br> /*superagent.get('http://gxwx.xmtsw.com/wechat/page/index/title/?openid='+rows[id].openid) <br> .end(function(err,res){ <br> cookie = res.header['set-cookie'].join(',').match(/(PHPSESSID=.+?);/)[1]; <br> //op[rows[id].wxid]=rows[id].openid; <br> });*/ <br> op[rows[id].wxid]=rows[id].openid; <br> //callback(op); <br> } <br> callback(op); <br> }); <br> connection.end(); <br> }
superagent 外面的 callback 里能正常返回
{ xudada0509: 'oVFWVjm***VDtygxoUta0', <br> xuchangyu77: 'oVFWVjrgX***3PKET83almQoz2gw', <br> linchunhua77: 'oVFWVjhLYe***K0UA1PGmp4N0flI', <br> linchunhua55: 'oVFWVjjGopj***UStfHc2JqyDwCA', <br> pangwanglin: 'oVFWVjkCg***_wxQ2bmhu2UkIxro' }
放 superagent 里面就是没都没有?
求解
为什么在 superagent 回调函数里面 组装{}外面访问不行 如何解决?
解决你妈批
在Node.js中,回调问题通常涉及到异步编程模型,这是Node.js的核心特性之一。Node.js使用事件驱动、非阻塞I/O模型,使得它在处理高并发请求时非常高效。然而,这也带来了回调地狱(Callback Hell)的问题,即嵌套回调导致代码难以阅读和维护。
以下是一个简单的示例,展示了Node.js中的回调使用:
const fs = require('fs');
// 读取文件的回调示例
fs.readFile('example.txt', 'utf8', (err, data) => {
if (err) {
console.error('读取文件出错:', err);
return;
}
console.log('文件内容:', data);
});
为了解决回调地狱问题,Node.js社区引入了多种解决方案,如Promise和async/await。
使用Promise可以简化异步代码结构:
const fs = require('fs').promises;
fs.readFile('example.txt', 'utf8')
.then(data => {
console.log('文件内容:', data);
})
.catch(err => {
console.error('读取文件出错:', err);
});
而async/await则进一步简化了异步代码的写法,使其看起来更像是同步代码:
const fs = require('fs').promises;
async function readFile() {
try {
const data = await fs.readFile('example.txt', 'utf8');
console.log('文件内容:', data);
} catch (err) {
console.error('读取文件出错:', err);
}
}
readFile();
通过使用Promise和async/await,我们可以更优雅地处理Node.js中的回调问题。