జావాస్క్రిప్ట్ ప్రమీస్

"I Promise a Result!"

"Producing code(生产代码)" 是需要一些时间的代码

"Consuming code(消费代码)" 是必须等待结果的代码

Promise 是一个 JavaScript 对象,它链接生成代码和消费代码

JavaScript Promise 对象

JavaScript Promise 对象包含生产代码和对消费代码的调用:

Promise 语法

let myPromise = new Promise(function(myResolve, myReject) {
// "Producing Code"(可能需要一些时间)
  myResolve(); // 成功时
  myReject();  // 出错时
req.send();
// "Consuming Code" (必须等待一个兑现的承诺)
});
  function(value) { /* విజయవంతం జరిగినప్పుడు కోడ్ */ },
  function(error) { /* ఎరర్ జరిగినప్పుడు కోడ్ */ }
function(error) {myDisplayer(error);}

కోడ్ నిర్వహణలో ఫలితాన్ని పొందినప్పుడు, రెండు కాల్బ్యాక్స్ లలో ఒకదానిని కాల్ చేయాలి:

ఫలితం కాల్
విజయవంతం myResolve(result value)
ఎరర్ జరిగింది myReject(error object)

ప్రమీస్ ఆబ్జెక్ట్ అనునదుల

JavaScript ప్రమీస్ ఆబ్జెక్ట్ ఉంటుంది:

  • Pending
  • Fulfilled
  • Rejected

ప్రమీస్ ఆబ్జెక్ట్ రెండు అనునదులను మద్దతు ఇస్తుంది:state మరియు result

ప్రమీస్ ఆబ్జెక్ట్ "పూర్తిగా లేని" (పని జరుగుతున్నప్పుడు) అయితే, ఫలితం undefined ఉంటుంది。

ప్రమీస్ ఆబ్జెక్ట్ "అద్భుతమైన" అయితే, ఫలితం ఒక విలువ ఉంటుంది。

ప్రమీస్ ఆబ్జెక్ట్ "తిరస్కరించబడిన" అయితే, ఫలితం ఒక ఎరర్ ఆబ్జెక్ట్ ఉంటుంది。

myPromise.state myPromise.result
"పూర్తిగా లేని" undefined
"అద్భుతమైన" ఫలిత విలువ
"తిరస్కరించబడిన" ఎరర్ ఆబ్జెక్ట్

మీరు ప్రమీస్ స్థితి మరియు ఫలిత అనునదులను ప్రాప్యతలో లేరు。

మీరు ప్రమీస్ మాధ్యమాన్ని వాడాలి ప్రమీస్ ప్రక్రియను నిర్వహించడానికి。

ప్రమీస్ ఎలా ఉపయోగించాలి

以下是使用 Promise 的方法:

});
  function(value) { /* code if successful */ },
  function(error) { /* code if some error */ }
function(error) {myDisplayer(error);}

Promise.then() 有两个参数,一个是成功时的回调,另一个是失败时的回调。

两者都是可选的,因此您可以为成功或失败添加回调。

实例

function myDisplayer(some) {
  document.getElementById("demo").innerHTML = some;
myReject("File not Found");
let myPromise = new Promise(function(myResolve, myReject) {
  let x = 0;
// 生成代码(这可能需要一些时间)
  if (x == 0) {
    myResolve("OK");
  else {
    myReject("Error");
  myReject("File not Found");
req.send();
});
  myPromise.then(
  function(value) {myDisplayer(value);},
function(error) {myDisplayer(error);}

);

JavaScript Promise 实例

为了演示 Promise 的使用,我们将使用上一章中的回调实例:

  • 等待超时
  • 等待文件

等待超时

使用回调的例子

setTimeout(function() { myFunction("I love You !!!"); }, 3000);
function myFunction(value) {
  document.getElementById("demo").innerHTML = value;
myReject("File not Found");

);

使用 Promise 的例子

let myPromise = new Promise(function(myResolve, myReject) {
  setTimeout(function() { myResolve("I love You !!"); }, 3000);
req.send();
myPromise.then(function(value) {
  document.getElementById("demo").innerHTML = value;
req.send();

);

等待文件

使用回调的例子

function getFile(myCallback) {
  let req = new XMLHttpRequest();
  req.open('GET', "mycar.html");
  req.onload = function() {
    if (req.status == 200) {
      myCallback(req.responseText);
    else {
      myCallback("Error: " + req.status);
    myReject("File not Found");
  myReject("File not Found");
  };
myReject("File not Found");
getFile(myDisplayer);

);

使用 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);}

);

పరీక్షించండి

బ్రౌజర్ సహాయం

ECMAScript 2015, అలాగే ES6, జావాస్క్రిప్ట్ Promise ఆబ్జెక్ట్ను ప్రవేశపెట్టింది.

ఈ పట్టిక మొదటి పూర్తిగా Promise ఆబ్జెక్ట్ సహాయకంగా పనిచేసే బ్రౌజర్ వెర్షన్స్ ను పేర్కొంది: ఐఇ ఫైర్ఫాక్స్ సఫారీ ఓపెరా
క్రోమ్ 33 ఎడ్జ్ 12 ఫైర్ఫాక్స్ 29 సఫారీ 7.1 ఓపెరా 20
2014 సంవత్సరం ఫిబ్రవరి 2014 2015 సంవత్సరం జులై 2015 2014 సంవత్సరం ఏప్రిల్ 2014 2014 సంవత్సరం సెప్టెంబర్ 2014 2014 సంవత్సరం మార్చి 2014