Javascript 等待事件发生时返回承诺的函数

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

我用一个函数读取post数据,当它读取“end”上的所有数据时,它返回一个承诺,问题是当它返回承诺时,函数不会继续。 代码如下:

    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或数据侦听器之前立即返回一个承诺