首页 > 解决方案 > 没有异步代码的承诺示例?

问题描述

我试图了解承诺的机制。具体来说,我们可以将什么都传递给第一个参数(通常称为解析)。例如:

function getFoo(url){
    return new Promise(function(resolve, reject) {
        let httpRequest = new XMLHttpRequest();
        httpRequest.open('GET', url);
        httpRequest.onload = function(){
            if(httpRequest ===200) {resolve(httpRequest.responseText);
            } else{ reject(Error(httpRequest.status));}
        }
        httpRequest.send();
    });
}

我正在尝试构建自己的函数,该函数可以从 Promise 中受益(所有示例都使用 setTimeout 或 ajax 代码)。任何人都可以提供一个使用 promise 的常规函数​​的简单示例(即使在这种情况下不需要该机制),以便我可以构建自己的函数来将某些内容传递给解析回调?谢谢

例如:

function getFoo(param){
    return new Promise(function(resolve, reject) {
        ????myFoo () { ...return...}
         resolve(myFoo);

            } else{ reject(???);}
        }
    });
}

标签: javascriptpromisecallback

解决方案


我们可以将什么都传递给第一个参数(通常称为解析)

resolve 只接受一个参数,但您可以向参数传递任何内容,它可以是数组、对象、函数……基本上是 javascript 支持的任何数据类型。

下面是一个简单的 Promise 示例。

PS 注意:只有当你调用 then 函数时才会调用 promise 对象,并且它是 then 函数接受回调以进行解析并拒绝。

function callPromise() {

  return new Promise(function(resolve, reject) {
  // do a thing, possibly async, then…

  if (true) {
    resolve("Stuff worked!");
  }
  else {
    reject(Error("It broke"));
  }
});

}

callPromise().then(function(success){
   console.log(success);
}, function(error)
{
  console.log(error);
})

推荐阅读