Я пытаюсь использовать setTimeout для задержки возврата ответа в узле.С помощью следующего кода API activAccount дает 404. Он регистрирует «в setTimeout», но ничего не возвращается.Есть ли способ сделать это?
module.exports.activateAccount = function *() {
this.body = { ok: false };
if(this.session.otherMembershipFound){
console.log("in otherMembershipFound");
setTimeout(function() {
console.log("in setTimeout");
this.status = 200;
this.body = { ok: false, result: {
ok: false
, result: null
, message: "We encountered one or more validation errors."
, debug: "Other Membership Found"
}
};
}, 3000)
} else {}
}
Согласно приведенному ниже объяснению Обещания, я попробовал следующее, но я борюсь с тем, какой должна быть правильная реализация.
if(this.session.otherMembershipFound){
console.log("in otherMembershipFound");
return new Promise(resolve => {
setTimeout(resolve, 3000);
})
.then(() => {
console.log("after");
this.status = 200;
this.body = { ok: false, result: {
ok: false
, result: null
, message: "We encountered one or more validation errors. Please check the entered data and try again. For assistance please call 1 (800)617-3169."
, debug: "Other Membership Found"
}
};
}, 3000)
} else {
При этом я получаю эту ошибку
(node:21796) UnhandledPromiseRejectionWarning: Error [ERR_HTTP_HEADERS_SENT]: Cannot remove headers after they are sent to the client
at ServerResponse.removeHeader (_http_outgoing.js:540:11)