0

我在 typescript 中创建了一个 angular js 服务来发布文件,当它成功时我只是用来alert()通知用户。

uploadFileToUrl = (file, uploadUrl) =>  {
    var fd = new FormData();
    fd.append('file', file);
    this.$http.post(uploadUrl, fd, {
        transformRequest: angular.identity,
        headers: { 'Content-Type': undefined }
    })
    .success(() => {
        alert("file uploaded");
    })
    .error(() => {
        alert("some error occured.");
    });
}

我可以调试代码并验证调用确实成功,但是当调用返回时,它显示成功,然后出现一个摘要错误,但如果我只是从服务返回一个承诺并在控制器使用then()中,它工作正常。

uploadFileToUrl = (file, uploadUrl) => {
    var fd = new FormData();
    fd.append('file', file);
    return this.$http.post(uploadUrl, fd, {
        transformRequest: angular.identity,
        headers: { 'Content-Type': undefined }
    })
}

我想知道有什么问题success()以及是否then()应该始终优先于success().

4

1 回答 1

0

Angular 中的 promise 机制由$q.

几周前,我已经看到promise.success()promise.error()弃用了。两者都不再出现在文档中。

因此,我建议您避免使用success()anderror()then(successFunction, errorFunction);改用。

文档在这里

编辑

在检查了源代码之后,我可以确保你.success不再.error存在于最新的 Angular 源代码中

https://github.com/angular/angular.js/blob/master/src/ng/q.js#L3

于 2015-08-19T13:26:57.500 回答