Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在使用前准备好一项服务_Javascript_Angular_Design Patterns - Fatal编程技术网

Javascript 在使用前准备好一项服务

Javascript 在使用前准备好一项服务,javascript,angular,design-patterns,Javascript,Angular,Design Patterns,我是个新手。我不知道我在各种服务中使用的这种模式是否正确。 我的服务需要执行一些http请求才能准备就绪。构造函数不能是异步的,因此我用以下方法解决此问题: 服务 export class MyService { constructor(HttpClient:http) { } private longAndNeededMethod():Observable{ //Blablabla.... return this.http.post(.

我是个新手。我不知道我在各种服务中使用的这种模式是否正确。 我的服务需要执行一些http请求才能准备就绪。构造函数不能是异步的,因此我用以下方法解决此问题:

服务

export class MyService {

    constructor(HttpClient:http) {
    }

    private  longAndNeededMethod():Observable{
       //Blablabla....
       return this.http.post(...);
    }

    async ready() {
      if(notReady){
        await this.longAndNeedMethod().toPromise().then(
          (response)=>{
               //do something
          });
      }
    }

    //Another methods
}

组件

export class MyComponent{
  constructor(private myService:MyService){}

  async onInit(){
    await this.myService.ready();
  }

  //Another methods
}

这个设计正确吗


谢谢

我不会用wait锁定用户界面。
最好让ready()方法返回一个observable,并在observable完成后使用该observable加载MyComponent。

我不会用wait锁定UI。
最好让ready()方法返回一个observable,并在完成observable后使用该observable加载MyComponent。

谢谢您的回答。当服务加载时,组件显示一个旋转的轮子。如果服务未准备好,则组件无法正常工作。谢谢您的回答。当服务加载时,组件显示一个旋转的轮子。如果服务未就绪,则该组件无法正常工作。