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(),但仍然不起作用