问题描述
我正在开发一个在 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);
});
显然我的问题对某些人来说不清楚。如果事情不清楚,问什么不清楚,也可以慢慢地再读一遍。误解显然是一回事。