Javascript 直接返回被拒绝的jQuery承诺

Javascript 直接返回被拒绝的jQuery承诺,javascript,jquery,Javascript,Jquery,对于jQuery的承诺,$。when()不带参数将返回已解析的承诺。返回被拒绝的jQuery承诺的等价物是什么 例如: (function () { return $.when(); })() .then(()=>console.log('resolved')) .fail(()=>console.log('failed')); 打印“已解决”。我只想更改函数返回的内容,以便它打印“failed” 这是为了将同步内容与jQuery承诺联系起来。我想做的唯一一件事是将整个

对于jQuery的承诺,
$。when()
不带参数将返回已解析的承诺。返回被拒绝的jQuery承诺的等价物是什么

例如:

(function () { return $.when(); })()
   .then(()=>console.log('resolved'))
   .fail(()=>console.log('failed'));
打印“已解决”。我只想更改函数返回的内容,以便它打印“failed”

这是为了将同步内容与jQuery承诺联系起来。我想做的唯一一件事是将整个事情包装在一个延迟对象中,例如,我可能会:

function doSomething () {
    let success = ...;
    return success ? $.when() : /* not sure */;
}
我可以这样做:

function doSomething () {
    return $.Deferred(function (def) {
        let success = ...;
        if (success)
            def.resolve();
        else
            def.reject();
    }).promise();
}

但是如果我不必像那样包装东西,并且可以直接返回类似
$.when()
的内容,那会更方便。

如果您确实想使用jQuery承诺而不是本机承诺,您可以使用:

(函数(){return$.when($.Deferred().reject());})()
。然后(()=>console.log('resolved'))
.fail(()=>console.log('failed'))

使用jQuery实现本机承诺的具体原因是什么?返回承诺。拒绝()@Bergi Nice find;谢谢