Для отображения статуса загрузки в приложении VueJS я использую библиотеку NProgress. Он работает хорошо и показывает полосу загрузки и вращающееся колесо. Однако содержимое HTML страницы уже отображается и отображается. Я хотел бы скрыть определенные части страницы во время выполнения запроса.
Есть ли возможность программно проверить наличие NProgress.done() и отобразить содержимое после его вызова?
Я хотел бы что-то вроде этого:
<template>
<div>
<NavBar />
<div v-show = "check here for NProgress.done()">
<p>Here are all the nice things with placeholders for the data from the API.</p>
</div>
</div>
</template>
<script>
import NavBar from '@/components/NavBar';
export default {
components: {
NavBar
}
}
</script>
Часть «проверьте здесь NProgress.done ()» - это то, что я не знаю, как решить.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Просматривая документацию NProgress, похоже, что она предоставляет «.status», который возвращает значение текущего загрузчика, но возвращает «ноль», когда загрузчик не «запущен».
<template>
<div>
<div v-show = "state.status == null">
<p>
Here are all the nice things with placeholders for the data from the
API.
</p>
</div>
</div>
</template>
<script>
import Vue from "vue";
import NProgress from "nprogress";
import "nprogress/nprogress.css";
const state = Vue.observable(NProgress);
export default {
data: () => ({ state }),
mounted: function () {
NProgress.start(); // Start the bar loading
setTimeout(() => { // Perform your async workloads
NProgress.done(); // .done() to finish the loading
}, 5000);
},
};
</script>
Вам нужно сделать NProgress реактивным, поэтому вы можете просто использовать Vue.observable(state).