Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/30.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
等待第三方JS库在Angular 2服务内完成初始化的最佳方法?_Angular_Es6 Promise_Angular2 Services - Fatal编程技术网

等待第三方JS库在Angular 2服务内完成初始化的最佳方法?

等待第三方JS库在Angular 2服务内完成初始化的最佳方法?,angular,es6-promise,angular2-services,Angular,Es6 Promise,Angular2 Services,我正在将第三方JS库包装到Angular服务中。在使用我的服务之前,我如何保证第三方JS库已加载/初始化等 您能看一下下面的代码并告诉我这是否是一种良好的编码实践吗?我在服务的构造函数中建立了一个承诺(最终将实现的承诺),我认为服务方法取决于该承诺的成功(请参见getMessages) 在这个例子中,我使用了用于JavaScript的Gmail API,结果是gapi.client.load()已经返回了一个承诺,这简化了代码。在另一种情况下,我可以创建自己的承诺,并在满足特定条件时手动实现它。

我正在将第三方JS库包装到Angular服务中。在使用我的服务之前,我如何保证第三方JS库已加载/初始化等

您能看一下下面的代码并告诉我这是否是一种良好的编码实践吗?我在服务的构造函数中建立了一个承诺(最终将实现的承诺),我认为服务方法取决于该承诺的成功(请参见
getMessages


在这个例子中,我使用了用于JavaScript的Gmail API,结果是
gapi.client.load()
已经返回了一个承诺,这简化了代码。在另一种情况下,我可以创建自己的承诺,并在满足特定条件时手动实现它。

您的方法似乎很好!另一种方法是在Gmail API库加载后引导应用程序:

var app = platform(BROWSER_PROVIDERS)
   .application([BROWSER_APP_PROVIDERS, appProviders]);

gapi.client.load('gmail', 'v1').then(() => {
  return app.bootstrap(AppComponent);
});
这样,当在应用程序中使用库时,您将确保库已准备就绪

下面是描述全局方法的对应plunkr:

var app = platform(BROWSER_PROVIDERS)
   .application([BROWSER_APP_PROVIDERS, appProviders]);

gapi.client.load('gmail', 'v1').then(() => {
  return app.bootstrap(AppComponent);
});