【发布时间】:2019-02-16 10:56:33
【问题描述】:
我面临一个问题,即函数 getVideoDetails 将 object Promise 作为对象返回,而我需要一个可以返回到另一个函数 getTrendingVideos 的简单对象
有人可以帮忙吗?
export class YoutubeService {
getTrendingVideos() {
var params = {
part: 'snippet',
chart: 'mostPopular',
regionCode: 'GB',
maxResults: '24',
key: config.youtubeApi.key
};
var result = [];
return axios.get('/', {params}).then(function(res){
result = res.data.items;
for (var i = 0; i < result.length; i++) {
result[i] = {
id: result[i].id,
title: result[i].snippet.title,
thumbnail: result[i].snippet.thumbnails.high.url,
publishedAt: moment(result[i].snippet.publishedAt).fromNow()
};
//**Below line Returning a promise object**
result[i] = YoutubeService.getVideoDetails(result[i]);
}
return result;
});
}
static getVideoDetails(video) {
var params = {
part: 'statistics',
id: video.id,
key: config.youtubeApi.key
};
return axios.get('/', {params}).then(function(res) {
var result = res.data;
video.viewCount = result['items'][0].statistics.viewCount;
video.likeCount = result['items'][0].statistics.likeCount;
return video;
});
}
}
【问题讨论】:
-
它从网络异步加载一个值。不可能立即返回仅在将来可用的值。
-
我正在尝试修复您的代码,当我在您分配
result[i] = {...}的位置遇到奇怪的代码时,然后在下一行,您将其他内容分配给result[i]。这对我来说毫无意义,所以我不明白你真正想用它做什么。