javascript - Isu tentang keselarasan fungsi penjana dalam js yang anda tidak tahu
为情所困
为情所困 2017-06-12 09:31:03
0
2
671

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

为情所困
为情所困

membalas semua(2)
巴扎黑

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. . .

phpcn_u1582

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.

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