【发布时间】:2023-03-26 17:08:01
【问题描述】:
所以我想知道承诺的响应和拒绝对象是怎么回事。 我在读这个documentation 有些事情我还不清楚。
例如,resolve() 对象是关于什么的。
我已经看到这个东西可以包含在一个字符串中,然后resolve() 被启动?
这是怎么回事,有什么意义
var promise1 = new Promise(function(resolve, reject) {
setTimeout(function() {
resolve('foo');
}, 300);
});
我最初认为只要回调函数返回一个值,解析函数/对象就会启动
然后可以继续.then()
所以我一直在玩这个东西一段时间,结果证明我的回报决心理论在 50% 的情况下有效,另外 50% 让我崩溃。
还有拒绝对象/函数,当我们说函数的结果是 0 但它必须是 1 才能继续时,你如何启动它?
var promise1 = new Promise(function(resolve, reject) {
if(someFunction() === 0)
{
reject();
} else {
resolve()
}
});
此代码仅在我的 someFunction() 中没有任何异步函数时有效,而且当我有任何异步函数时,它总是返回 undefined。
所以到目前为止,我还不清楚 Promise 的概念及其用途。
【问题讨论】:
-
如果你在
new Promise((resolve, reject)=>...)中调用resolve('some value'),它会将'some value'传递给.then()回调。如果你打电话给reject('some error'),它会做同样的事情,但对于.catch()回调,不会调用.then() -
只要
someFunction()是异步的,你就需要使用if (await someFunction()并且你的promise 参数函数也应该是异步的。 -
resolve和reject是函数,而不仅仅是对象。 “我最初认为resolve函数 [...] 会在回调函数返回值时启动,然后它可以继续到.then()” — “回调函数”是指在new Promise(...)内运行?return是前进到.then的一种方式,但有时无法返回(例如基于嵌套事件的函数);那是使用resolve的时候。 -
@George “并且不会调用
.then()” —then接受两个参数。如果出现错误,将调用第二个。 -
我发现这个博客很有用medium.com/front-end-weekly/…
标签: javascript promise