javascript - Mengenai Janji, mengapa saya tidak boleh mendapatkan perintah pelaksanaan yang betul apabila saya menulisnya seperti ini?
学习ing
学习ing 2017-07-05 11:02:27
0
1
824
$.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?

学习ing
学习ing

membalas semua(1)
阿神
test('test')
        function test (value) {
          let promise = new Promise(function (resolve, reject) {
            test1(value)
            resolve(1)
          })
          promise.then(function (id) {
            console.log('我后执行,我的值为:' + id)
          })
        }

        function test1 (value) {
          console.log(value)
          window.setTimeout(function (value) {
            console.log('我先执行,我的值为:' + value)
          }, 10 * 1000)
        }

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.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan