$.ajax({
url: '/latestNewsIndex',
type: 'get',
dataType: 'json',
timeout: 1000,
success: function (data, status) {
if (data.value.length == 0) {
alert("暂时没有更多新闻!");
}
else {
f2(data.value);
}
},
fail: function (err, status) {
alert('暂时没有更多新闻!');
}
})
function f2(news) {
var promise = new Promise(function(resolve,reject) {
pullUpAction(news);
resolve(1);
});
promise.then(
function(id) {
loaded()
});
}
En ajax puis en appelant f2(), vous pouvez d'abord exécuter pullUpAction(news) puis exécuter charger(). Mais si f2() est exécuté directement, comme ceci :
f2(news);
function f2(news) {
var promise = new Promise(function(resolve,reject) {
pullUpAction(news);
resolve(1);
});
promise.then(
function(id) {
loaded()
});
}
L'effet de l'exécution des méthodes Promise les unes après les autres ne peut pas être obtenu. Pourquoi cela ?
Le résultat est
Lorsqu'il n'y a aucun paramètre, la fonction test1 est exécutée en premier, puis revient lorsque l'objet promis est exécuté avec succès. Une supposition possible est que lorsque vous utilisez une requête ajax, le temps d'exécution de la fonction f2 est exactement le même ou inférieur. que l'heure de fin de la requête ajax, vous voyez donc le résultat d'exécution souhaité, mais lors d'un appel direct sans ajax, le temps de réponse réel est reflété. Il est recommandé de déboguer pullUpAction ici. Ce qui précède est mon humble opinion et est uniquement à titre de référence.