我一个承诺对象的理解如下:承诺是如何创建的?
var Promise = {
then: function() { ... },
catch: function() { ... }
};
如果我有下面这段代码有一个函数,并返回一个承诺对象(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");
返回承诺对象的结构f ormed?
在fetch.js
的new Promise(...)
部分中,您将函数传递给构造函数。我之前没有看到过这种情况,并且想知道new Promise(...)
部分中的resolve
和reject
参数如何传递给上述示例Promise对象中的then
和catch
键。
[ECMAScript 2015,25.4 Promise Objects,ff。](http://www.ecma-international.org/ecma-262/6.0/#sec-promise-objects) – Andreas
所以它说那里'A PromiseCapability是一个Record值,用于封装承诺对象以及能够解析或拒绝承诺对象的函数。但是,“能够解析或拒绝的函数”是如何从“新Promise(解析,拒绝){...})'构造函数? – CapturedTree
请看到这篇文章https://www.promisejs.org/implementing/和链接的stackoverflow问题http://stackoverflow.com/questions/23772801/basic-javascript-promise-implementation-attempt/23785244#23785244 –