我想在使用ES6的JavaScript中使用Promises從對象返回2個方法中的數據,這會在生產中調用到端點。如何正確使用承諾返回2個不同的結果
我的MovieApi
對象我有2個承諾,我想首先返回一個電影列表,然後通過ID返回1個電影。我想用promise來避免回調地獄。我下面列出的問題的答案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)如果你想更好地理解Promise。 –
你一定想用'MovieApi.findMovie(...)' – Bergi
呃...我現在可以看到這個錯誤,但這是使用承諾時遇到的一個問題,現在我得到了Arun的幫助,下面是Arun 。感謝您鏈接到類似的問題,這是同樣的問題。 –