承诺返回未定义

新手上路,请多包涵

我正在尝试使用 promise 将 ajax 请求发送到 php 脚本,该脚本检查服务器上是否存在文件并返回布尔值。

我有以下代码,但 fileExists 函数总是返回未定义的。

如何将 promise 包装在函数中并让函数返回 promise 值?

 function fileExists(url) {
    var promise = new Promise(function(resolve, reject) {
        var xhr = new XMLHttpRequest();
        xhr.onload = function() {
            resolve(this.responseText);
        };
        xhr.onerror = reject;
        xhr.open('GET', url);
        xhr.send();
    });
    promise.then(function(e) {
        return e;
    });
}

var result = fileExists("url_to_file");

原文由 K Hsueh 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 300
2 个回答

尝试这个:

 function fileExists(url) {
  return promise = new Promise(function(resolve, reject) {
    var xhr = new XMLHttpRequest();
    xhr.onload = function() {
      resolve(this.responseText);
    };
    xhr.onerror = reject;
    xhr.open('GET', url);
    xhr.send();
  });
}

fileExists("url_to_file").then(text => console.log(text));

您的函数不返回任何内容。如果您返回承诺,您可以在数据解决后保留数据。

原文由 Hari Haran 发布,翻译遵循 CC BY-SA 4.0 许可协议

这部分代码:

 promise.then(function(e) {
    return e;
});

只返回 e回调函数。您必须 该回调中处理结果。

 promise.then(function() {
    // handle result;
});

或者也可以返回@Ole 所示的承诺。

原文由 Rax Weber 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题