AngularJs $ q promise是否与async / await兼容?

布赖恩·沙利文

我正在使用TypeScript(分别是版本9.07、1.5.11和3.7.5)在Angular / AngularJs混合应用程序中工作。我们所有的HTTP请求,甚至是由新的Angular组件发出的请求,都使用以纯Javascript实现的包装服务,该服务最初与应用程序的“旧版” AngularJs一起开发,其方法返回由AngularJs $ http生成的$ q promises服务。由于该服务是纯Javascript,因此返回值的键入不是问题,因为TypeScript认为它们只是an any,所以很高兴让我将其转换为IPromise<TReturnType>

我的问题是这些承诺是否与TypeScript中asyncandawait关键字完全兼容使用简单的示例进行尝试似乎可以很好地工作,但是我担心只有在使用带有非本地Promises的关键字的运行时才会出现的极端情况。

亭子

与之兼容async不是问题,因为该关键字不直接取决于现有的promise实例:它使相应的函数返回新创建的EcmaScript Promise对象。

如果一个async函数返回一个thenable,则返回的本机Promise将取决于该thenable。

您可以在此代码段中看到后者的效果:

async function test() {
    let thenable = { then: cb => cb(13) };
    return thenable;
}

let result = test();
console.log(result instanceof Promise);
result.then(console.log); // 13

await关键字可以与返回thenable的表达式一起使用,因此在这种情况下,也不需要具有与EcmaScript兼容的promise:

async function test() {
    let thenable = { then: cb => cb(13) };
    let value = await thenable;
    console.log(value); // 13
}

test();

因此,总而言之,两个关键字都将识别一个可行的对象并按预期进行处理。并不需要此thenable是本地Promise的实例。

当然,$q诺言是可行的,所以很好。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用TypeScript返回AngularJS $ q promise

来自分类Dev

使jQuery Deferred / Promises和AngularJS $ q Deferred / Promises兼容

来自分类Dev

AngularJS-在promise.then块中捕获$ q.reject

来自分类Dev

如何按顺序使用angularjs $ q链接promise?

来自分类Dev

使用$ q Promise更改服务/模型的AngularJS更新视图

来自分类Dev

AngularJS-在promise.then块中捕获$ q.reject

来自分类Dev

在AngularJS中进行Q promise函数调用阻塞

来自分类Dev

AngularJS中的“ $ q defered.promise不是函数”错误

来自分类Dev

AngularJS:$ q错误

来自分类Dev

AngularJS and Q.fcall

来自分类Dev

AngularJS $ scope。$ apply与$ q

来自分类Dev

AngularJS Promises,$ q,延迟

来自分类Dev

AngularJS $ scope。$ apply与$ q

来自分类Dev

Q库版本0.9.7 Promise与ES2015 Promise兼容吗?

来自分类Dev

是否可以在没有$ q.defer()的情况下在AngularJS $ q中分叉并嵌套两个嵌套线程?

来自分类Dev

我可以在AngularJS中将$ q.all与不返回.promise的函数一起使用吗?

来自分类Dev

需要在Angularjs应用程序中使用promise($ q)处理会话超时

来自分类Dev

AngularJS使用$ q Promise更新具有服务/模型更改的视图

来自分类Dev

茉莉花完成()的AngularJS $ q.defer():promise.then函数不会被调用

来自分类Dev

AngularJS-$ q的Promise没有正确地级联到控制器

来自分类Dev

AngularJS和Q.fcall

来自分类Dev

创建自己的angularjs $ q许诺

来自分类Dev

AngularJS $ q。所有超时

来自分类Dev

AngularJS和Q.fcall

来自分类Dev

AngularJS $ q按顺序运行

来自分类Dev

AngularJs $q.all 使用

来自分类Dev

httpclient async / await是否

来自分类Dev

嵌套的promise,await和async

来自分类Dev

是否在不使用async await关键字的情况下等待promise的价值?

Related 相关文章

热门标签

归档