gpt4 book ai didi

javascript - promise 是如何创建的?

转载 作者:行者123 更新时间:2023-11-30 09:38:34 25 4
gpt4 key购买 nike

我对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.jsnew Promise(...) 部分中,您将函数传递给构造函数。我以前从未见过这样的东西,我想知道 new Promise(...) 部分中的 resolvereject 参数是如何得到的传递给上面示例 Promise 对象中的 thencatch 键。

最佳答案

我无法解释,但可以向您展示函数如何获取解析值或捕获错误

将一个变量保存为该变量的 promise 然后执行然后像下面的例子一样运行

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

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

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

关于javascript - promise 是如何创建的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42291353/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com