我在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()
。
答案 0 :(得分:0)
角度中的承诺机制由$q
提供。
几周前,我看到promise.success()
和promise.error()
已被弃用。两者都不再出现在文档中。
因此,我建议您不要使用success()
和error()
,而是使用then(successFunction, errorFunction);
。
修改强>
检查完源代码后,我可以确保.success
和.error
不再存在于最新的角度源代码中
https://github.com/angular/angular.js/blob/master/src/ng/q.js#L3