我们说我的网页上有一个按钮和一个输出字段。 当我单击按钮时,会多次调用异步函数。 每次,函数都会返回一些数据,我想将这些数据发送到输出字段(并附加到以前的数据)。
这是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:
2个函数的主要工作' getHTML'和' doParse' :
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);
};