gpt4 book ai didi

javascript - promise 不等待解决

转载 作者:行者123 更新时间:2023-11-28 14:54:20 32 4
gpt4 key购买 nike

我刚刚听说了 Promise,听起来……很有希望(好吧,我要离开了)。

我希望显示以下代码:
- 在initVariables之前
- 在 initVariables 之前 - someName
- 在 initVariables 之前 - someName - 在 initElements

之后

但我得到的是:
- 在initVariables之前
- 在initVariables之前
- 在 initVariables 之前 - 在 initElements

之后

有人能帮帮我吗? :-)
谢谢大家! :D

var url = "https://opendata.paris.fr/api/records/1.0/search/?dataset=stations-velib-disponibilites-en-temps-reel&rows=100&facet=banking&facet=bonus&facet=status&facet=contract_name"

var test = Object.create(MyTestClass);
console.log(test.testVariable);

let loadVariables = new Promise(function(resolve, reject) {
test.initVariables(url);
resolve(test);
console.log(test.testVariable);
});

loadVariables.then(function(test){
test.initElements();
});
console.log(test.testVariable);

并且 MyTestClass 定义为:

var MyTestClass = {

testVariable: "before initVariables",

initVariables: function(url) {
$.getJSON(url, function (result) {
this.testVariable += " - " + result.records[0].fields.name;
});
},

initElements: function() {
this.testVariable += " - after initElements";
}
}

最佳答案

Promise 立即运行。它们不会立即解析/拒绝的唯一方法是,如果您在它们内部执行某些操作(例如调用 $.getJSON)并且仅根据来自的回调调用 resolve/reject $.getJSON.

function getJSONP(url) {
return new Promise(function(resolve, reject) {
$.getJSON(url, resolve);
}
}

function getJSONP(url) {
return new Promise(function(resolve, reject) {
$.getJSON(url, function(result) {
resolve(result);
});
}
}

这样就更清晰了

然后你就可以这样做

 getJSONP(someURL).then(function(result) {
console.log(result);
});

关于javascript - promise 不等待解决,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43485496/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com