Javascript 等待事件发生时返回承诺的函数
我用一个函数读取post数据,当它读取“end”上的所有数据时,它返回一个承诺,问题是当它返回承诺时,函数不会继续。 代码如下:Javascript 等待事件发生时返回承诺的函数,javascript,asynchronous,events,async-await,Javascript,Asynchronous,Events,Async Await,我用一个函数读取post数据,当它读取“end”上的所有数据时,它返回一个承诺,问题是当它返回承诺时,函数不会继续。 代码如下: if (true) { log.check(ip, async function (c) { if (c) { const data = await ReadPost(req).catch(function (err) { console.error
if (true) {
log.check(ip, async function (c) {
if (c) {
const data = await ReadPost(req).catch(function (err) {
console.error(err);
});
console.log("Error:m" + data);
}
});
}
function ReadPost(req) {
var data = "";
if (req.method === 'POST') {
req.on('data', function (buffer) {
data += buffer;
});
req.on('end', function () {
data = data.toString();
console.log("Data:" + data);
return Promise.resolve(data);
});
}
else {
return Promise.reject();
}
}
}
我不知道是否可以这样做,为了解决这个问题,我将把函数的其余部分放在req.on end内部的WAIT下面,req.on end也可以被调用为twise?函数实际上不返回承诺,它返回未定义的
或拒绝承诺。要使其与wait一起工作,您必须在函数顶部返回一个承诺,然后在oned侦听器中调用resolve
:
函数ReadPost(req){
返回新承诺((解决、拒绝)=>{
var数据=”;
如果(请求方法=='POST'){
请求开启('数据',功能(缓冲区){
数据+=缓冲区;
});
请求on('end',function(){
data=data.toString();
console.log(“数据:”+数据);
解析(数据);
});
}否则{
拒绝();
}
});
}
在这里,函数在侦听结束或数据侦听器之前立即返回一个承诺。函数实际上并不返回承诺,它返回未定义的
,或拒绝承诺。要使其与wait一起工作,您必须在函数顶部返回一个承诺,然后在oned侦听器中调用resolve
:
函数ReadPost(req){
返回新承诺((解决、拒绝)=>{
var数据=”;
如果(请求方法=='POST'){
请求开启('数据',功能(缓冲区){
数据+=缓冲区;
});
请求on('end',function(){
data=data.toString();
console.log(“数据:”+数据);
解析(数据);
});
}否则{
拒绝();
}
});
}
在这里,函数在侦听end或数据侦听器之前立即返回一个承诺