Promise katika JavaScript
- Previous page JS asynchronous
- Next page JS Async
"I Promise a Result!"
"Producing code (programu ya kuzingatia)" ina huzui kutumia muda mwingi
"Consuming code (programu ya kusoma)" ina huzui kutumia matokeo
Promise ina kampuni ya JavaScript inayolinkisha programu ya kuzingatia na programu ya kusoma
Kampuni ya JavaScript Promise
Kampuni ya JavaScript Promise ina programu ya kuzingatia na kusaidia kusoma kwa kufanyia:
Inaumia ya kampuni ya Promise
let myPromise = new Promise(function(myResolve, myReject) { // "Producing Code" (ina huzui kutumia muda mwingi) myResolve(); // Kufanana myReject(); // Kosa }); // "Consuming Code" (ina huzui kutumia kipendekezo cha kufanyika) myPromise.then( function(thamani) { /* Kufanana kina programu */ }, function(kosa) { /* Kosa kina programu */ } );
Kampuni ya kufanyia kwa sababu ya kumekuwa na matokeo, ina huzui kutumia mabagili yeyote ya kuzingatia kwa mbali mbali:
Matokeo | Tumia |
---|---|
Kufanana | myResolve(thamani) |
Kukosa | myReject(kampuni ya kosa) |
Mafuta ya kampuni ya Promise
Kampuni ya JavaScript Promise inaweza kwa mpangilio wa:
- Inaharibika
- Kufanyika
- Kufutwa
Kampuni ya Promise inasimamia mafuta mbili:state na matokeo.
Kampuni ya Promise ina matokeo bila maana wakati ina "inaharibika" (kushika).
Kampuni ya Promise ina matokeo kama thamani wakati ina "kufanyika".
Kampuni ya Promise ina matokeo kama kampuni ya kosa wakati ina "kufutwa".
myPromise.state | myPromise.result |
---|---|
"inaharibika" | Bila maana |
"kufanyika" | Wakati wa matokeo |
"kufutwa" | Kampuni ya kosa |
Ina huzui kusoma mafuta ya Promise na matokeo.
Ina huzui kutumia mtihani Promise.
Kisha huzui kusaidia Promise
Hapa ni maelezo ya matumizi ya Promise:}
myPromise.then( function(value) { /* code if successful */ }, function(error) { /* code if some error */ } );
Promise.then() ina thamani mbili, moja ni kikubaliano kwa kushinda na mengine ni kikubaliano kwa kushindwa.
Zote zimehewa, kwa hiyo unaweza kuongeza kikubaliano kwa kushinda au kushindwa.
Mfano
function myDisplayer(some) { document.getElementById("demo").innerHTML = some; } let myPromise = new Promise(function(myResolve, myReject) { let x = 0; // Kichunguzia mitaa (hii inaweza kuchukua wakati fulani) if (x == 0) { myResolve("Sikuwezi"); } else { myReject("Kosa"); } }); myPromise.then( function(value) {myDisplayer(value);}, function(error) {myDisplayer(error);} );
Mfano wa JavaScript Promise
Kwa kutoa maelezo ya kuanzisha Promise, tutumia maelezo wa kikubaliano kutoka kitengo kilichopita:
- Weka kwa muda
- Weka faili
Weka kwa muda
Mfano wa mtumiaji wa kikubaliano
setTimeout(function() { myFunction("Nimejua wewe !!!"); }, 3000); function myFunction(value) { document.getElementById("demo").innerHTML = value; }
Mfano wa mtumiaji wa Promise
let myPromise = new Promise(function(myResolve, myReject) { setTimeout(function() { myResolve("Nimejua wewe !!"); }, 3000); }); myPromise.then(function(value) { document.getElementById("demo").innerHTML = value; });
Weka faili
Mfano wa mtumiaji wa kikubaliano
function getFile(myCallback) { let req = new XMLHttpRequest(); req.open('GET', "mycar.html"); req.onload = function() { if (req.status == 200) {}} myCallback(req.responseText); } else { myCallback("Kosa: " + req.status); } } req.send(); } getFile(myDisplayer);
Mfano wa mtumiaji wa Promise
let myPromise = new Promise(function(myResolve, myReject) { let req = new XMLHttpRequest(); req.open('GET', "mycar.htm"); req.onload = function() { if (req.status == 200) {}} myResolve(req.response); } else { myReject("File not Found"); } }; req.send(); }); myPromise.then( function(value) {myDisplayer(value);}, function(error) {myDisplayer(error);} );
Browser support
ECMAScript 2015, also known as ES6, introduced JavaScript Promise objects.
The following table indicates the first browser version to fully support Promise objects:
Chrome | IE | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 33 | Edge 12 | Firefox 29 | Safari 7.1 | Opera 20 |
February 2014 | July 2015 | April 2014 | September 2014 | March 2014 |
- Previous page JS asynchronous
- Next page JS Async