Есть несколько тысяч вопросов по этому вопросу, и я думаю, что я прочитал их все, но я все еще не понимаю, почему следующее не работает.
Локально этот код выполняется без проблем.При запуске на TravisCI - он завершается неудачно с гарантией, что done () называется ошибкой.
it('Function oLab.GetObjects & oLab.Deploy', (done) => {
var l = new oLab('1')
l.getObjects().then(function(data){
console.log(data);
expect(data.length).to.above(0);
//There is a bunch of other code in here commented out since this alone doesn't work.
})
.then(() => done(), done)
.catch(function (err) { }); // Not executed
});
Я знаю, что функция getObjects не работает:
this.getObjects = function () {
console.log("oLab getObjects function");
return getResources(this.id);
}
, которая вызывает getResources:
function getResources(labID){
return db.any('select * from lab_resources where lab_id = ' + labID).then(function(data){
var resources = [];
//Modifies the resources and returns the list. Logging this displays the correct data.
return resources;
})
.catch(function (err) { }); // Not executed
}
Вопросы:
- Я прочитал этот блог и на его основе добавил (сделано) к своим функциям, поскольку, как мне кажется, я возвращаю обещание.Вернуть ли мне обещание, если оно вложено?IE я вызываю getObjects, за которым следует getResources.getResources возвращает запрос к БД, но внутри него - возвращаемое значение.Означает ли это, что я возвращаю обещание или значение вызывающей функции?Я думал, что это вернет обещание, так как обещание не будет выполнено немедленно.
- В getObjects я пытаюсь установить свойство oLab.Должен ли я установить это свойство в функции getObjects или вернуть его вызывающему методу, а затем изменить свойство oLab?