Я пытаюсь использовать Promises в JavaScript с помощью ES6, чтобы возвращать данные из 2 методов из объекта, которые в процессе производства вызывают конечную точку.Как правильно использовать обещания вернуть 2 разных результата
Мой объект MovieApi
У меня есть 2 обещания, которые я хочу вернуть, во-первых, список фильмов, а затем 1 фильм по id. Я хочу использовать обещания, чтобы избежать адского черта. Я выполняю подход, указанный в качестве ответа на вопрос Arent promises just callbacks, но я явно делаю это неправильно, так как у меня есть ошибка findMovie is not defined
let movieData = [
{
id: '1011',
name: 'Gleaming the cube',
year: "1989"
},
{
id: "1012",
name: "Airborne",
year: "1989"
}
]
let MovieApi = {
findMovie: function(id) {
return new Promise(function(resolve, reject) {
if(id === undefined) reject(Error('incorrect movie id'));
let movie = ''
for (let m of movieData) {
if (m.id.toLowerCase() === id.toLowerCase()) {
movie = m
break
}
}
resolve(movie)
});
},
findAllMovies: function() {
return new Promise(function(resolve, reject) {
if(movieData === undefined) reject(Error('Could not find any movies'))
resolve(movieData)
});
}
}
Вызовите фильм обещание, как это ... но я получаю сообщение об ошибке, пытаясь называть мой второй .then()
метод
MovieApi.findAllMovies()
.then(function (movies){
return findMovie(req.params.id)
}).then(function(movie){
let MovieStore = { movie: movie, movies: movies }
}).catch(function(error) {
console.error("Failed!", error);
});
есть ли способ, чтобы выйти из обратного вызова ад здесь, или я просто должен сделать еще один вызов к объекту MovieApi, по существу, имеющий тот же вопрос читаемость, как если бы я использовал обратные вызовы ,
[Это довольно хорошо читать] (http://pouchdb.com/2015 /05/18/we-have-a-problem-with-promises.html), если вы хотите лучше понять обещания. –
Вы, конечно же, хотели использовать 'MovieApi.findMovie (...)' – Bergi
Ну ... Я вижу эту ошибку сейчас, но это была проблема, с которой я сталкивался с обещаниями, и теперь мне это помогло, Аруном ниже , Спасибо, что ссылались на этот похожий вопрос, это была та же проблема. –