Rumah  >  Soal Jawab  >  teks badan

javascript - Mengenai Janji, mengapa saya tidak boleh mendapatkan perintah pelaksanaan yang betul apabila saya menulisnya seperti ini?

$.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学习ing2663 hari yang lalu791

membalas semua(1)saya akan balas

  • 阿神

    阿神2017-07-05 11:04:27

    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.

    balas
    0
  • Batalbalas