javascript - 用另一个延迟对象解析jquery延迟对象

标签 javascript jquery promise jquery-deferred deferred

如何使用另一个的解析状态来解析一个延迟对象。 请简单的例子和​​简单的解释(看到了很多困难的)。

我如何使用 foo() 解决 result promise ,而不需要 .done(..).fail( ..)?

var result = $.Deferred();

/**
 * @returns {Deferred}
 */
var foo = function() {
  // ... something that returns deferred object at random moment of time
};

foo()
  .done(function(){result.resolve()})
  .fail(function(){result.reject()})
;

setTimeout(function() {
    result.reject();
}, 50);

setTimeout(function(){
    console.log('Result is:', result.state());
}, 100);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

最佳答案

您可以使用传入的函数 $.Deferred并从内部解决/拒绝延迟:

var result = $.Deferred(function() {
    Math.random() > 0.5 ? this.resolve() : this.reject();
});

setTimeout(function(){
    document.write('Result is: ' + result.state());
}, 100);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

关于javascript - 用另一个延迟对象解析jquery延迟对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30078403/

相关文章:

javascript - 将 URL 参数添加到 SPServices

javascript - 将 jQuery 生成的表发送到另一个 php 页面

javascript - jScrollPane jquery插件中滚动条的自定义高度

javascript - 数组中缺失值用0填充

javascript - 在 DeepstreamIO 中创建动态命名记录

javascript - 有没有更简洁的方式来编写JS来显示和隐藏?

jQuery Ajax : Copy - Paste thingy

javascript - 无法 promise 晦涩的库,然后在协程中使用它

javascript - 失败后重新启动 Promise

node.js - 尽管使用 Node12.x 在 AWS Lambda 上 try catch ,但未处理的 promise 拒绝