Jquery 为什么延迟。失败不是';有人打电话吗?

Jquery 为什么延迟。失败不是';有人打电话吗?,jquery,promise,Jquery,Promise,我已经了解到jQuery延迟不符合承诺/A+的事实 这让我测试了一个代码(应该在不传播到主窗口并停止运行的情况下产生错误,他们建议使用类似的代码,但我想尝试使其更简单-因此我的问题): 问题: def。然后(…)返回一个保存在条中的承诺 bar-失败时-应运行: bar.fail(function (val) { console.log('Exception thrown and handled'); }); 但它没有运行 我缺少什么?尝试在初始bar=def中重新定义b

我已经了解到jQuery延迟不符合承诺/A+的事实

这让我测试了一个代码(应该在不传播到主窗口并停止运行的情况下产生错误,他们建议使用类似的代码,但我想尝试使其更简单-因此我的问题):

问题:

def。然后(…)
返回一个保存在
条中的承诺

bar
-失败时-应运行:

  bar.fail(function (val) {
     console.log('Exception thrown and handled');
    });
但它没有运行


我缺少什么?

尝试在初始
bar=def中重新定义
bar
。然后(成功,错误)
解析
def
。在
catch
处,将
bar
设置为新
jQuery.Deferred()
,调用
reject
,并将
e
作为参数,返回“new”
bar.promise()
,它应该在
bar处调用
error
,然后(成功,错误)
;并允许将
bar
链接到jQuery承诺方法

var def=newjquery.Deferred();
变量成功=功能成功(数据){
console.log(“成功”,数据)
};
var error=function error(val){//为什么此行不运行?
log('引发和处理异常',val,val.message);
};
var bar=def.then(功能(rslv){
//”“成功`
console.log(“rslv”,rslv);
试一试{
抛出错误('Exception!');
}
捕获(e){
//返回被拒绝的jQuery承诺,
//有理由的
bar=jQuery.Deferred().reject(e);
};
//调用'error`,
//返回`bar`jQuery promise`Error('Exception!')`,
//对于“链接”jQuery承诺方法
返回条
});
//调用“成功”,调用“错误”`
然后(成功,错误);
定义、决心(“成功”);
控制台日志(1)

您只能解决/拒绝一次延迟请求。@a.Wolff*我忘了。谢谢您正在解析
def
一次。。。那就是拒绝它。。。只有在我了解他们为什么使用2延期的情况下,才能解决/拒绝承诺,参见
  bar.fail(function (val) {
     console.log('Exception thrown and handled');
    });