我一個承諾對象的理解如下:承諾是如何創建的?
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 –