cari

Rumah  >  Soal Jawab  >  teks badan

javascript - Isu tentang keselarasan fungsi penjana dalam js yang anda tidak tahu

Saya melihat kod sedemikian dalam buku Tujuan kod adalah untuk memulakan dua permintaan ajax tak segerak pada masa yang sama dan menolak hasilnya ke dalam tatasusunan mengikut tertib

.
//假设request是基于primose的ajax工具
var arr = [];
function *reqData ( url ) {
    var data = yield request(url);
    yield;    //关于这一行书上是这样解释的,控制转移
    arr.push(data);
}
var it1 = reqData("http:....1"), it2 = reqData("http:....2");    //总之是2个不同的url地址
var p1 = it1.next(), p2 = it2.next();
p1.then( function(data) {
    it1.next(data);
} );
p2.then( function(data) {
    it2.next(data);
} );
Promise.all([p1, p2]).then( function () {
    it1.next();
    it2.next();
} );

Saya tidak pernah faham untuk tujuan pemindahan kawalan, dan buku itu tidak banyak menceritakan tentangnya

var arr = [];
function *reqData ( url ) {
    arr.push( yield  request(url) );
};
var it1 = reqData("http:....1"), it2 = reqData("http:....2");    //总之是2个不同的url地址
var p1 = it1.next(), p2 = it2.next();
Promise.all([p1, p2]).then( data => {
    var [data1, data2] = data;
    it1.next(data1);
    it2.next(data2);
});

Ini adalah kod ringkas saya, mengalih keluar pemindahan kawalan Apakah bahaya tersembunyi melakukan ini berbanding dengan yang asal

为情所困为情所困2727 hari yang lalu649

membalas semua(2)saya akan balas

  • 巴扎黑

    巴扎黑2017-06-12 09:33:03

    Secara peribadi, saya rasa sebab mengapa kod dalam buku itu terlalu bertele-tele adalah untuk memastikan susunan mendapatkan tatasusunan data.
    Sebaliknya, kod ringkas anda sangat elegan, ringkas dan bersih. . .

    balas
    0
  • phpcn_u1582

    phpcn_u15822017-06-12 09:33:03

    Iaitu, selepas memperoleh data, penjana dijeda semula, menunggu rakaman seragam ke tatasusunan, dan mengawal susunan penulisan ke tatasusunan.

    Kod dalam versi Promise.all anda yang ditulis semula tidak berguna.

    balas
    0
  • Batalbalas