Js

JavaScript异步操作以同步的方式展现出来

Jason
2021-09-13 / 0 评论 / 40 阅读 / 正在检测是否收录...

对于初入Js的同学异步和同步操作往往傻傻搞不清,Js在es6中提供了promise对象,可将异步操作以同步的方式展现出来
Promise 对象代表了未来将要发生的事件,用来传递异步操作的消息。
要想创建一个 promise 对象、可以使用 new 来调用 Promise 的构造器来进行实例化。

下面是创建 promise 的步骤:

var promise = new Promise(function(resolve, reject) {
    // 异步处理
    // 处理结束后、调用resolve 或 reject
});

Promise 构造函数包含一个参数和一个带有 resolve(解析)和 reject(拒绝)两个参数的回调。在回调中执行一些操作(例如异步),如果一切都正常,则调用 resolve,否则调用 reject。
Promise.prototype.then方法:链式操作
Promise.prototype.catch方法:捕捉错误
下面对上述部分进行举例操作:

function ajax(URL) {
    return new Promise(function (resolve, reject) {
        var req = new XMLHttpRequest(); 
        req.open('GET', URL, true);
        req.onload = function () {
        if (req.status === 200) { 
                resolve(req.responseText);
            } else {
                reject(new Error(req.statusText));
            } 
        };
        req.onerror = function () {
            reject(new Error(req.statusText));
        };
        req.send(); 
    });
}
var URL = "/try/ajax/testpromise.php"; 
ajax(URL).then(function onFulfilled(value){
    document.write('内容是:' + value); 
}).catch(function onRejected(error){
    document.write('错误:' + error); 
});
1

评论 (0)

取消