sucess()上的摘要错误,然后是()angularjs with typescript

时间:2015-08-19 13:18:43

标签: angularjs typescript angular-promise angular-services angular-digest

我在typescript中创建了一个角度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()

1 个答案:

答案 0 :(得分:0)

角度中的承诺机制由$q提供。

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

因此,我建议您不要使用success()error(),而是使用then(successFunction, errorFunction);

Documentation here

修改

检查完源代码后,我可以确保.success.error不再存在于最新的角度源代码中

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