导航
×
   ❮   
HTML CSS JavaScript PHP Go Sass W3C Colors ECMS

JS 教程

JS 简介 JS 如何使用 JS 输出 JS 语法 JS 语句 JS 注释 JS 变量 JS 运算符 JS 条件语句 JS 循环 JS 字符串 JS 数字 JS 函数 JS 对象 JS 日期 JS 数组 JS 类型化数组 JS 集合 JS Map 映射 JS Math JS 正则表达式 JS 数据类型 JS 错误 JS 事件 JS 编程 JS 关键字参考 JS 保留关键字参考 JS 运算符参考 JS 运算符优先级 JS UTF-8 字符 JS UTF-8 符号 JS UTF-8 表情符号 JS 版本

JS 高级教程

JS 对象 JS 函数 JS 类 JS 迭代 JS Promises JS 模块

JavaScript Promises 对象


Promise 对象属性

JavaScript Promise 对象可以是:

  • Pending
  • Fullfilled
  • Rejected

Promise 对象支持两个属性:stateresult

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

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

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

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

Copyright ©2020-2026 freew3c.com All Rights Reserved 提供的内容仅用于学习和测试,不保证内容的正确性。