我有一个名为func1
的函数正在调用var dfd = $.ajax
,并返回dfd.promise()
,现在在我的main函数中,我有这样的代码:
function addOperation() {
var addPromise = func1();
addPromise.then(
function(sender, args, msg) {
alert("success");
},
function() {
alert("fail");
});
}
以上代码无效,对我有用的是:
function addOperation() {
var addPromise = func1();
addPromise.fail(
function(sender, args, msg) {
alert("fail");
})
.done(
function() {
alert("success");
});
}
从我的理解是,那么(functionSuccess,functionFail)与原来的promise上调用.done和.fail是一样的,不是吗?我迷失了。
答案 0 :(得分:1)
您不应该从您的函数返回dfd.promise()
,$.ajax
的返回值是承诺。
直接返回dfd
(或$.ajax
的结果)
docs说得最好:
jQuery 1.5中$ .ajax()返回的jqXHR对象实现了Promise接口,为它们提供了Promise的所有属性,方法和行为(有关更多信息,请参阅Deferred对象)。这些方法接受一个或多个函数参数,这些参数在$ .ajax()请求终止时被调用
答案 1 :(得分:0)
$.ajax
返回的jqXHR对象实现了Promise接口。
jQuery 1.5中$ .ajax()返回的jqXHR对象实现了 Promise接口,为它们提供所有属性,方法和 Promise的行为(有关详细信息,请参阅Deferred对象)。
因此,func1应该只返回<exec executable="src/main/webapp/bin/webdriver.bat" failonerror="true" resultproperty="return.code">
<arg line="${ccc}/eeee--report-format JSON --report-file testResultserer/resultere-data/wwwww.json"/>
</exec> (1)
返回的值。