У меня есть следующие функции, работающие в nodejs, но я использую setTimeout, а не обещание. Если createchange занимает больше времени, чем у меня есть тайм-аут, мой код дает сбой, но не правильно перехватывает ошибку.
Как мне заменить или изменить следующие функции для работы с обещанием, поэтому deploychange ожидает завершения createchange, прежде чем продолжить выполнение кода?
Я пробовал пару вещей, но ничего не работает. Не уверен, какую функцию я должен переделать для наиболее эффективного решения.
Любая помощь будет оценена по достоинству.
Первая функция
function createchange(accessToken){
const data = {
templateName: "Template 1",
summary: "Deploy Change",
configurationItems: [
config_item
],
wasEnvUsedForTesting: false,
environment: test_env
};
rp({
url: dbConfig.cmas_url,
resolveWithFullResponse: true,
method: 'POST',
json: true,
auth: {
bearer: accessToken
},
body: data,
headers: {
'Content-Type': 'application/json',
'apikey': dbConfig.consumer_key,
},
}, function(err, res) {
if(err){
console.log(err.body);
}else{
console.log(res.body);
crq = res.body.changeid;
}
});
}
2-я функция
function run() {
deploychange();
setTimeout(function(){ deployinsert(); }, 7500);
deployrun();
}
3-я функция
function deploychange (callback) {
if (req.body.deployEnv == "PRD"){
getToken(function(accessToken) {
createchange(accessToken);
})};
}