【发布时间】:2023-03-15 07:53:01
【问题描述】:
我一直在从我的 PlayersController 代码中的几个点调用方法 MediaNext() 来链接下一个媒体播放(如果有)。
- 此 MediaNext() 方法从内存中的一些不同播放列表中返回一个 Media 对象。因此,它尝试封装获取下一个 Media 对象(如果有的话)的概念。
- 但是,最近我修改了 MediaNext(),对于某些新条件 X,我现在必须加载外部数据才能返回此替代媒体对象。
MediaNext():any { // any could be typed like Media_I
if(cond1) {
...
return Media1
}
if(cond2) {
...
return Media1
}
//
if(! AutoPlayNext) return null;
//
if(NoMoreMedia) return null;
//
If (condX) {
// in order to wait for the Load() method I am subscribing to its promise
this.Service1.Load(Media).then(() => {
...processing...
return Media
})
??? what do I return here, it does not make sense to return null, since potentially a Media is on its way ???
}
return null // safe catch. nomore media should not happen.
}
我的问题
通过订阅 .Load() 的承诺,我在 JS 中收集的内容的执行不应被阻止等待媒体数据返回。相反,执行需要流动并且对 MediaNext() 的调用必须返回。但是,我可以在上面的代码“???”中指示的地方返回什么。
是否应该对 MediaNext() 进行编码以针对所有条件返回一个承诺?
当我编写 Promise 和 observables 时,我主要做猜测工作,因为它们仍然是一个难以理解和掌握的野兽,所以请随意提出替代方案。
感谢您的帮助。
【问题讨论】:
-
是的,从
mediaNext()返回一个承诺
标签: javascript typescript promise