$http.post().then vs $q 库?

$http.post().then vs $q library?

据我了解,当您在 angularjs 中执行类似 $http.post(...).then(...) 的操作时,它 returns 是一个承诺。令我困惑的是 $q 是一个 promise 库,如果 $http.post(...).then(...) 为我创建了一个 promise,$q 库是否必要?

如果您只是通过 $http.post(...).then(...) 处理响应,则不需要直接使用 $q 服务。

但是 angular 在您调用 $http.

时使用 $q internaly

另请注意,$q 不是一个单独的库,它只是 angular 内核中的模块。

所以$q可以用来做很多事情。另一个例子是将 javascript 执行转储到不同线程的网络工作者。您可以创建一个将其包装在承诺中的服务。我最喜欢用 $q 做的事情之一是这样的:

$q.all([httpRequestOne, httpRequestTwo, httpRequestThree]).then(function(data){ ... });

这让我可以等到所有 3 个 http 请求都完成后再 运行 编码。