如何在严格的 js 文件中读取承诺

问题描述

我正在开发一个在 ECMA 5 中运行的程序。

所有 js 文件都严格使用,这使得大多数在线建议不可用,例如 return new Promise.resolve 在严格模式下不可用。

我正在调用一个异步方法获取一个 url,如果返回了一个 url,那么用户应该看到一个按钮,按下该按钮会将用户转发到该页面我有这个与异步和等待一起工作。现在我想将它从页面加载移动到页面加载后执行此操作,这样它就不会影响页面呈现。以防服务中断。

    var self = this;
    $(document).ready(function () {
        alert("ok");
        var promise = $.get(myService.getMyUrl());
        $.when.apply(self,promise).then(function() {
            self.url(arguments);
            self.showButton(self.url() ? true : false);
        });
    });

显示警报,所以我知道我到了这里,但问题是我无法将该函数设为异步函数并简单地等待结果,那么我该如何解决承诺?

如上所述,我已经尝试过 new Promise.resolve()(给出:在严格模式下不允许使用变量而不声明它)并且此代码也不起作用,因为参数在严格模式下不可读。还有其他想法吗?

解决方法

来自https://api.jquery.com/jquery.get/

jQuery.get( url [,data ] [,success ] [,dataType ] )

我认为您想要的是将 success 函数放入对 get 的调用中。但我不知道 self 应该指什么,而且我认为 arguments 也可能没有正确使用。所以我建议早点设置。

  let self = something;
  let args = somethingElse;
  $(document).ready(function () {
      alert("ok");
      $.get(myService.getMyUrl(),function(data,textStatus) {
          // maybe set args from data?
          self.url(args);
          self.showButton(self.url() ? true : false);
      });
  });
,

最终解决了

    myService.getMyUrl().done(function(data) {
        self.myUrl(data);
        self.showButton(myUrl ? true : false);
    });

显然我的问题对某些人来说不清楚。如果事情不清楚,问什么不清楚,也可以慢慢地再读一遍。误解显然是一回事。