我对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对象的结构?
在fetch.js
部分的new Promise(...)
中,您将函数传递给构造函数。我之前没有见过这样的内容,我想知道resolve
部分中的reject
和new Promise(...)
参数如何传递给then
和catch
键在上面的示例Promise对象中。
答案 0 :(得分:4)
我无法解释,但向您展示如何使函数获取已解析的值或捕获获取错误
将变量保存为该变量的保存承诺 然后执行then函数,如下面的示例
var a = new Promise(function (resolve, reject) {
resolve(1);
})
a.then();
当你执行a.then()时,它会在promiseStatus中获得两个参数PromiseStatus和PromiseValue,你将得到它被解析或拒绝,在PromiseValue中,你将获得你通过resolve或reject handler传递的值
Promise
__proto__
:
Promise
catch:catch()
constructor: Promise()
then:then()
Symbol(Symbol.toStringTag):"Promise"
__proto__:Object[[PromiseStatus]]:"resolved"[[PromiseValue]]:1