我是 Vue js 和转换的新手,我正在设计一个 Vue 组件,我打算在其中包装从服务器延迟加载的数据,以便当数据不可用时,显示加载 gif。
它工作得很好。但是,当我添加一个简单的淡入淡出过渡以使加载 gif 淡出并在数据可用时内容淡入(反之亦然)时,当一个出现而另一个出现时,内容和 gif 会相互向上或向下推动消失。
这是我的Lazy.vue组件文件:
<template>
<div class="fixed-pos">
<transition name="fade">
<slot v-if="loaded"></slot>
<div v-else>
<img src="../assets/loading.gif"/>
</div>
</transition>
</div>
</template>
<script>
export default {
name: 'Lazy',
props: {
loaded: {
type: Boolean
}
}
}
</script>
Run Code Online (Sandbox Code Playgroud)
以及它的示例用法:
<template>
<div>
<button @click="loaded = !loaded">Toggle</button>
<lazy :loaded="loaded">
<ul v-if="rendered">
<transition-group name="fade">
<li v-for="notif in notifs" v-bind:key="notif">
<span>{{notif}}</span>
</li>
</transition-group>
</ul>
</lazy>
</div>
</template>
<script>
import Lazy from './Lazy'
export default {
name: …Run Code Online (Sandbox Code Playgroud) 我一直在尝试 Project Reactor 和反应流。subscribeOn我在使用使流在不同线程上运行时遇到问题。将我的代码放在主线程中,我需要主线程块直到流完成,所以我做了这样的事情:
Flux.just(1, 2, 3, 4)
.log()
.subscribeOn(Schedulers.parallel())
.subscribe((i) -> {
// some operation
});
try {
Thread.sleep(20000L);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Finished");
Run Code Online (Sandbox Code Playgroud)
然后我注意到有一种blockLast()方法可以进行阻塞。但我不能同时使用 subscribe 和 blockLast 因为它们不 return Flux。
有没有一种优雅的方法来做到这一点?