【发布时间】:2017-01-29 20:05:04
【问题描述】:
假设我的网页上有一个按钮和一个输出字段。 当我单击按钮时,会多次调用异步函数。 每次,该函数都会返回一些数据,我想将这些数据发送到输出字段(并附加到之前的数据)。
这里是 main.js:
$(document).ready(function () {
$("#submitButton").on('click', function () {
$.post(
'/',
{
text: inputField.val(),
depth: $('#depthField').val()
},
function (response) {
let outField = $('#outputField');
let txt = outField.text().trim();
outField.text(txt + "\n new data: " + response);
}
);
});
}
然后我有一个 index.js:
router.post('/', function (req, res) {
let text = req.body.text;
getHTML(text, function (buf) {
doParse(buf, function (out) {
res.send(out);
})
});
});
getHTML 返回一些数据,由 doParse 处理。 doParse 还会生成一些数据,这些数据应该被解析回输出字段。
我猜,post-method 不是正确的方法,这样做,因为它只被调用一次?
编辑 1:
问题是,我只能看到回调发送的第一个数据,然后我得到一个
(node:16436) UnhandledPromiseRejectionWarning:未处理的承诺拒绝(拒绝 id:1):错误:发送后无法设置标头。
编辑 2:
'getHTML' 和 'doParse' 2 个函数的主要工作原理:
const getHTML = function(callback) {
for (let j = 0; j < 10; j++) {
callback(j);
}
};
const doParse = function(buf, callback) {
let msg = 'val = ' + buf;
console.log(msg);
callback(msg);
};
【问题讨论】:
-
帖子很好 - 您的困难的性质是什么?您还没有真正描述您遇到的问题
-
正如@JaromandaX 提到的,请更详细地描述您的问题,但您应该在nodejs doParse 回调中使用 .end() 来发回响应:nodejs.org/api/…
-
如上所述,我总是收到“发送后无法设置标题”错误。
-
@Soro 每个请求多久调用一次 doParse 回调?只有一次?
-
不,我被叫了好几次......我上传了一些示例代码来展示它的原理
标签: javascript jquery node.js