Rumah > Soal Jawab > teks badan
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
巴扎黑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. . .
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.