Javascript Typescript将ActiveX函数包装为承诺调用或异步调用
我正在使用Angular框架和Typescript创建一个intranet web应用程序 该应用程序需要与客户机协同工作,因此我使用ActiveX技术实现了一些COM功能(我们使用Internet Explorer,因此它工作正常) 我有两个功能: openApp—将文件从服务器复制到本地计算机 getInstalledVersion-从文件的本地coy读取版本信息 我想做的是在调用openApp之后,我想调用getInstalledVersion(获取新复制文件的版本信息)。显然,我希望在调用getInstalledVersion之前确保复制过程已完成 这听起来像是在承诺中包装openApp,或者在openApp完成后找到其他方法调用getInstalledVersion 有没有人能为我指明一个方向,告诉我如何才能做到这一点 现行守则如下:Javascript Typescript将ActiveX函数包装为承诺调用或异步调用,javascript,angularjs,typescript,activex,Javascript,Angularjs,Typescript,Activex,我正在使用Angular框架和Typescript创建一个intranet web应用程序 该应用程序需要与客户机协同工作,因此我使用ActiveX技术实现了一些COM功能(我们使用Internet Explorer,因此它工作正常) 我有两个功能: openApp—将文件从服务器复制到本地计算机 getInstalledVersion-从文件的本地coy读取版本信息 我想做的是在调用openApp之后,我想调用getInstalledVersion(获取新复制文件的版本信息)。显然,我希望在调
export class AppService implements IAppService {
private _appServiceClass: any;
constructor() {
this._appServiceClass = new ActiveXObject("BeaufortAppStoreClientProcessing.Services.AppServiceJsonWrapper");
}
openApp(app: IApp, sourceRootFolder: string, destinationRootFolder: string): void {
var jsonApp = JSON.stringify(app);
this._appServiceClass.OpenApp(jsonApp, app.AppType.AppTypeID, sourceRootFolder, destinationRootFolder);
// Want to call getInstalledVersion here after openApp succeeds.
}
getInstalledVersion(app: IApp): string {
var version: string;
var appType = app.AppType.AppTypeID;
switch (appType) {
case 1:
var jsonApp = JSON.stringify(app);
version = this._appServiceClass.GetInstalledVersion(jsonApp).toString();
break;
case 2:
version = "n/a";
break;
default:
version = "Incorrect AppType";
break;
}
return version;
}
}
OpenApp(1)在调用时是否立即返回,或者(2)是否等待副本完成?如果(1),您必须启用一些回调到
setInterval
循环中轮询ActiveX控件上的某些属性,直到成功。它等待复制完成。在这种情况下,我想我可以在之后调用第二个函数。我已经研究过事件,是的,用JavaScript处理COM事件似乎很棘手。我仍然有一种感觉,我可以使用有棱角的承诺,但不确定如何使用。感谢指针。我已经编写了一个脚本,它使得在Javascript中处理COM事件更加简单。OpenApp(1)在调用时立即返回,还是(2)等待复制完成?如果(1),您必须启用一些回调到setInterval
循环中轮询ActiveX控件上的某些属性,直到成功。它等待复制完成。在这种情况下,我想我可以在之后调用第二个函数。我已经研究过事件,是的,用JavaScript处理COM事件似乎很棘手。我仍然有一种感觉,我可以使用有棱角的承诺,但不确定如何使用。感谢您的指针。我已经编写了一个脚本,它使用Javascript处理COM事件变得更加简单。