【问题标题】:javascript promise resolve is not a functionjavascript promise resolve 不是一个函数
【发布时间】:2021-11-05 04:49:40
【问题描述】:

我尝试使用 Promise,但无法返回正确的解析对象。

我的承诺是:

function retrievecount(id, type) {
    var dfrd = $.Deferred();
    var hits = "the result";
    dfrd.resolve(hits);
    return dfrd.promise();
}

我称之为:

 retrievecount(id, type)
    .then(function(hits) {
        //do stuff with the hits object
    });
    

但每当我运行此代码时,我都会收到错误:

“dfrd.resolve 不是函数”

我试过了:

   hits => dfrd.resolve(hits);

 dfrd.resolve=hits;

还有更多,但我就是无法让它工作。我在这里做错了什么?

【问题讨论】:

  • 我无法复制这个问题。您也可以在不创建新承诺的情况下执行return dfrd.resolve(hits);
  • 请创建一个可以复制问题的示例。仅仅粘贴代码并说“这对我不起作用”是不够的。请阅读:stackoverflow.com/help/minimal-reproducible-example 并使用堆栈片段:meta.stackoverflow.com/questions/358992/…
  • 请提供足够的代码,以便其他人更好地理解或重现问题。
  • 很抱歉,但请参阅下面的答案,问题不在我的解决方案中,而是在代码的其他地方。但是,我现在无法删除问题并引诱投反对票:-)

标签: javascript jquery promise deferred


【解决方案1】:

看来问题在于实际代码中的一些错误,其中 dfrd 在此过程中被更改为另一种类型的变量。典型的 javascript 非类型安全。我通过更改变量名来修复它。

实际的代码是由其他人编写的,而且显然要复杂得多,其中包含嵌套的 Promise 和对库的调用,并不是您可以在 S.O. 上发布的真正内容。

【讨论】:

    【解决方案2】:

    我运行了您的代码,没有发现任何问题。在这里检查 https://jsfiddle.net/shahzadfatehali/mjtw81o3/

    function retrievecount(id, type) {
        var dfrd = $.Deferred();
        var hits = "the result";
        dfrd.resolve(hits);
        return dfrd.promise();
    }
    
    retrievecount(5, "new_type")
        .then(function(hits) {
            console.log(hits);
        });
    

    是否还缺少其他代码?

    【讨论】:

    • 那是评论,不是答案。
    猜你喜欢
    • 1970-01-01
    • 2019-12-14
    • 2018-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-17
    • 1970-01-01
    相关资源
    最近更新 更多