JQueryPromise承诺 - 如何转换?

时间:2017-04-06 10:33:01

标签: typescript promise async-await

我有一段返回JQuery承诺的代码:

const jqProm = server.downloadAsync();

我希望在异步函数中使用它。我希望我可以创建类似C# TaskCompletionSource ,返回虚拟任务(Promise)以及作为 jqProm的处理程序解决/拒绝设置状态虚拟任务(承诺)

怎么做?我只能找到 Promise 构造函数来接受解析器和拒绝器操作 - 但是没有像 PromiseCompletionSource 这样的东西。

2 个答案:

答案 0 :(得分:2)

我今天亲自遇到了这个问题。 This应该做到这一点。

将jQuery承诺转换为Angular承诺:

var angularPromise = $q.when(jQueryPromise); // eg: $q.when($.get(...));

将jQuery承诺转换为本机或Bluebird承诺:

var promise = Promise.resolve(jQueryPromise); // eg: Promise.resolve($.get(..));

答案 1 :(得分:2)

jQuery promises是thenables,这意味着你可以将它们与原生承诺一起使用就好了。他们将隐含地获得Promise.resolved。所有你需要写的是

std::char_traits<std::byte>