JS Promises

创建于 2024-12-03 / 22
字体: [默认] [大] [更大]

Promise 对象属性

JavaScript Promise 对象可以是:

  • Pending
  • Fullfilled
  • Rejected

Promise 对象支持两个属性:stateresult

当 Promise 对象 "pending"(工作)时,结果是 undefined。

当 Promise 对象 "fulfilled" 时,结果是一个值。

当一个 Promise 对象是 "rejected" 时,结果是一个错误对象。

myPromise.statemyPromise.result
"pending"undefined
"fulfilled"a result value
"rejected"an error oject

如何使用 Promise

以下是使用 Promise 的方法:

promise.then(function(result)
  { // 如果有效 },  { // 如果它坏了 }
);

实例

function myDisplayer(some) {
  document.getElementById("demo").innerHTML = some;
}

let myPromise = new Promise(function(myResolve, myReject) {
  let x = 0;
// 生产代码(可能需要一些时间)
  if (x == 0) {
    myResolve("OK");
  } else {
    myReject("Error");
  }
});

myPromise.then(
  function(response) {myDisplayer(response);},
  function(error) {myDisplayer(error);}
);

亲自试一试 »


等待文件

我们可以使用上一章的例子:

实例

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(response) {myDisplayer(response);},
  function(error) {myDisplayer(error);}
);

亲自试一试 »


浏览器支持

ECMAScript 2015,也称为 ES6,引入了 JavaScript Promise 对象。

下表注明了首个完全支持 Promise 对象的浏览器版本:

Chrome 33 Edge 12 Firefox 29 Safari 7.1 Opera 20
Feb, 2014 Jul, 2015 Apr, 2014 Sep, 2014 Mar, 2014



0 人点赞过