$.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()
});
}
Dengan ajax dan kemudian memanggil f2(), anda boleh melaksanakan pullUpAction(berita) dahulu dan kemudian melaksanakan loaded(). Tetapi jika f2() dilaksanakan secara langsung, seperti berikut:
f2(news);
function f2(news) {
var promise = new Promise(function(resolve,reject) {
pullUpAction(news);
resolve(1);
});
promise.then(
function(id) {
loaded()
});
}
Kesan kaedah pelaksanaan Janji satu demi satu tidak dapat dicapai Mengapa ini?
Hasilnya ialah
Apabila tiada tetapan, fungsi test1 dilaksanakan dahulu dan kemudian kembali apabila objek janji berjaya dilaksanakan Satu kemungkinan tekaan ialah apabila anda menggunakan permintaan ajax, masa penyiapan fungsi f2 adalah sama atau kurang. daripada masa tamat permintaan ajax , jadi anda melihat hasil pelaksanaan yang anda inginkan, tetapi apabila memanggil terus tanpa ajax, masa tindak balas sebenar ditunjukkan. Adalah disyorkan untuk menyahpepijat pullUpAction di sini adalah pendapat saya yang rendah hati dan hanya untuk rujukan.