Javascript 在返回承诺中执行.then()

Javascript 在返回承诺中执行.then(),javascript,node.js,telegram,telegram-bot,Javascript,Node.js,Telegram,Telegram Bot,我的代码是:- function scammer(message) { return new Promise((resolve,reject)=>{ if(condition){ if (condition) { bot.KickMember(params).then((message)=>{ console.log("kicked");

我的代码是:-

function scammer(message) {
    return new Promise((resolve,reject)=>{
        if(condition){
            if (condition) {
                bot.KickMember(params).then((message)=>{
                    console.log("kicked");
                });
            } else {
                console.log("Not kicked");
            }
            resolve();
       }else{
          reject();
       }
   });
}

在上面的代码中,函数scammer在if-else语句中也能很好地工作,但是then()不起作用,因为我将它放入了一个新的承诺中,是否有一种方法可以执行then(),而不必从新的承诺中得到它。

您不需要创建承诺,只需返回您得到的承诺:

if (condition) {
    return bot.KickMember(params).then((message) => {
        console.log("kicked");
    });
} else {
    console.log("Not kicked");
    return Promise.reject(new Error("some reason"));
}

可能是这样:
resolve()
应该在
bot
promise中

function scammer(message) {
    return new Promise((resolve,reject)=>{
        if (condition) {
            bot.KickMember(params).then((message)=>{
                console.log("kicked");
                resolve();
            });
        } else {
            console.log("Not kicked");
            reject();
        }
    });
}
根据您的代码,在您降落到
内之前,
resolve()
将执行
bot的
promise

function scammer(message) {
    return new Promise((resolve,reject)=>{
        if (condition) {
            bot.KickMember(params).then((message)=>{
                console.log("kicked");
                resolve();
            });
        } else {
            console.log("Not kicked");
            reject();
        }
    });
}

如果我错了,请纠正我。

您的
那么当您从
bot.KickMember(params)
获得的承诺得到解决时,将调用
函数。这有什么问题?不清楚有什么方法可以执行then()而不脱离新的承诺?我想你只是想返回承诺,
返回bot.KickMember(params)。然后((message)=>{
但这是一个猜测,因为我不太理解你的问题这是
resolve();
应该在
bot.KickMember(params)中。然后((message)=>{
。否则,在bot库执行其工作之前,承诺将得到解决。我刚刚编辑了代码,我需要在执行if时返回resolve,在执行时返回rejectreject@JonasW.哦,我没有意识到,
reject()
是一个编辑,现在你的初始答案让人感觉更清楚了。删除了resolve()和reject(),但仍然不起作用