javascript - Promise 被拒绝并带有非错误警告

标签 javascript jquery ajax promise deferred

错误:h1.js:25 警告: promise 因非错误而被拒绝:[object String]

不完全确定原因,很乐意帮助理解错误及其原因。仍在学习 Promises 和 AJAX 所以帮助非常感谢! (例如,当我写这篇文章时,我也认为用一个 Promise 包装一个 ajax 对象有点多余,但老实说我不知道​​如何重写它)

var logisticsModule = (function() {
  return {
    initialize: function() {
      dateTimeFxns.getReservedDates.then(
        // success
        function(reserved_dates) {
          console.log("success with value = " + reserved_dates)
        },
        function(error) {
          console.log("error with value = " + error)
        }
      )
    }
  }
})();

var dateTimeFxns = {
  getReservedDates: new Promise( function(resolve, reject) {
    $.ajax({ 
      // some url & data
    })
    .done(function(result) {
      resolve(result)
    }
    .fail(function(error) {
      reject(error)
    }
  })
}

$(document).ready(function() {
  logisticsModule.initialize();
})

当我有 .fail 时,UPDATE 警告消息仍然存在:

.fail(function(jqXHR, textStatus, errorThrown) {
  reject(new Error(errorThrown))
})

最佳答案

这只是意味着抛出的错误不是instanceof Error。例如,以下不是错误,但我可以抛出它,因为......好吧......你可以在 JavaScript 中抛出任何东西。

throw 42;

这给了我们一个美妙的未捕获异常:42

要抛出实际错误,请使用Error:

throw new Error('An actual error');

现在在您的特定情况下,您需要传递 jQuery 提供的错误,这不是它传递的第一个参数。它给你一个字符串,所以把它包在错误中......

.fail(function(jqXHR, textStatus, errorThrown ) {
  reject(new Error(errorThrown));
}

关于javascript - Promise 被拒绝并带有非错误警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47062852/

相关文章:

javascript - 表单未重定向到新页面

.net - 需要在 asp.net 中实现雅虎注册表单名称字段的想法

javascript - 可以将响应设置为 ArrayBuffer 客户端,但不能使用 Node.js

javascript - 将动态 HTML 类存储为 JS 变量

jquery - Windows Mobile cordova/phonegap 样式和事件

javascript - 如何使用 XMLHttpRequest 设置 Access-Control-Allow-Origin header

javascript - 使用javascript向服务器提交post请求

jquery删除选项的 "selected"属性?

javascript - 未捕获的 TypeError : $(. ..).imageMapResize 不是函数(...)

php - 停止直接访问文件夹中的所有文件,但允许 ajax 请求