Так что я борюсь с этим пару дней, и я нашел решение для этого, но я чувствую, что это не очень хорошо. В настоящее время у меня есть следующее. Мне это не нравится, потому что я вкладываю обещания в обещания. Я не знаю, хорошо ли это, но это не похоже на это.Выполнить другое обещание только в том случае, если первое не получило хороших результатов.
То, что я пытаюсь выполнить с помощью этого кода, - это сначала проверить базу данных кэша на значение, если оно там нет, тогда я проверю реальную базу данных.
Любые советы/рекомендации/указатели/комментарии о том, как сделать это более элегантно?
var getData = function() {
var cancel = false
var cache = db.getFromCache(query)
.then((data) => {
// Check if data is up to date
if (uptodate) {
return Promise.resolve(data)
}
cancel = true
})
return cache
.then(() => {
if (cancel)
return db.getFromDatabase().then(//code)
}
}
ps: этот код может работать или не запускаться, я только что сделал это быстро для этого вопроса. Я не могу пропустить настоящий код здесь
Почему вы вызываете 'cache()'? Действительно ли 'cache' является функцией, которая возвращает обещание? Это не похоже, что это имеет смысл. – jfriend00
'db.getFromCache' возвращает обещание –
Тогда' cache(), тогда 'просто неправильно и не будет работать. Возможно, вы имеете в виду 'cache.then()'. – jfriend00