承诺如何创build?

我对Promise对象的理解如下:

var Promise = { then: function() { ... }, catch: function() { ... } }; 

如果我有下面这个代码有一个函数,并返回一个Promise对象( fetch.js ):

 var xhr = require('xhr') module.exports = function (uri) { return new Promise(function (resolve, reject) { xhr(uri, function (err, res, body) { if (err) return reject(err) if (res.statusCode !== 200) return reject(new Error(body)) resolve(body) }) }) } 

然后在我的index.js我做:

 var fetch = require('./fetch'); var promise = fetch("some_url"); 

如何从var promise = fetch("some_url");返回promise对象的结构var promise = fetch("some_url"); 形成的呢?

new Promise(...)部分的fetch.js中,您将函数传递给构造函数。 我以前没有见过这样的东西,想知道new Promise(...)部分中的resolvereject参数是如何传递给上面的示例Promise对象中的thencatch键的。

我不能解释,但向你展示如何然后函数获得解决的价值或赶上获得错误

采取一个variables保存到该variables的承诺,然后执行,然后像下面的例子一样的function

 var a = new Promise(function (resolve, reject) { resolve(1); }) a.then(); 

当你执行a.then()时,会在promiseStatus中得到两个参数PromiseStatus和PromiseValue,你将会得到它parsing或者拒绝,并且在PromiseValue中你将得到你通过resolve或reject处理程序传递的值

 Promise __proto__ : Promise catch:catch() constructor: Promise() then:then() Symbol(Symbol.toStringTag):"Promise" __proto__:Object[[PromiseStatus]]:"resolved"[[PromiseValue]]:1