Javascript AngularJs$q承诺是否与async/await兼容?

Javascript AngularJs$q承诺是否与async/await兼容?,javascript,angularjs,angular,typescript,Javascript,Angularjs,Angular,Typescript,我正在使用TypeScript(分别为9.07、1.5.11和3.7.5版)开发AngularJs/AngularJs混合应用程序。我们所有的HTTP请求,即使是由新的Angular组件发出的请求,都使用一个用纯Javascript实现的包装器服务,该服务最初是与应用程序的“遗留”AngularJs端一起开发的,其方法返回AngularJs$HTTP服务生成的$q承诺。由于该服务是纯Javascript,因此返回值的键入不成问题,因为TypeScript认为它们只是一个any,我很乐意将其转换为

我正在使用TypeScript(分别为9.07、1.5.11和3.7.5版)开发AngularJs/AngularJs混合应用程序。我们所有的HTTP请求,即使是由新的Angular组件发出的请求,都使用一个用纯Javascript实现的包装器服务,该服务最初是与应用程序的“遗留”AngularJs端一起开发的,其方法返回AngularJs$HTTP服务生成的$q承诺。由于该服务是纯Javascript,因此返回值的键入不成问题,因为TypeScript认为它们只是一个
any
,我很乐意将其转换为
IPromise


我的问题是,这些承诺是否与TypeScript中的
async
wait
关键字完全兼容。用简单的例子进行尝试似乎效果不错,但我担心的是,只有在运行时使用那些带有非本机承诺的关键字时才会出现的死角问题。

异步
的兼容性不是问题,因为该关键字并不直接依赖于现有的promise实例:它使相应的函数返回一个新创建的EcmaScript promise对象

如果
async
函数返回一个thenable,那么返回的本机承诺将使其解析依赖于该thenable

您可以在这个片段中看到后一种效果:

async函数测试(){
设thenable={then:cb=>cb(13)};
返回表格;
}
让结果=测试();
console.log(Promise的结果实例);
result.then(console.log);//13