Javascript promise JS中resolve和return的区别
**如果我有**Javascript promise JS中resolve和return的区别,javascript,node.js,Javascript,Node.js,**如果我有**返回结果 这一承诺是否已经兑现?“已解决的承诺”是什么意思?承诺通过值结果来解决。在您编写的代码段中,then块不会改变任何内容,因为它承诺使用结果值进行解析,就像没有return语句和then块一样 但是,如果您返回不同的值,那么承诺将使用该值进行解析。如果您要在这个then中返回另一个承诺,您可以“链接”这些块,也就是说,您可以编写下一个“then”块,它将在前一个then块中接收返回承诺的解析值 解析的承诺意味着完成了由承诺处理的代码,并使用传入的解析值执行传递给然后方法的
返回结果
这一承诺是否已经兑现?“已解决的承诺”是什么意思?承诺通过值
结果
来解决。在您编写的代码段中,then
块不会改变任何内容,因为它承诺使用结果
值进行解析,就像没有return语句和then
块一样
但是,如果您返回不同的值,那么承诺将使用该值进行解析。如果您要在这个then
中返回另一个承诺,您可以“链接”这些块,也就是说,您可以编写下一个“then”块,它将在前一个then
块中接收返回承诺的解析值
解析的承诺意味着完成了由承诺处理的代码,并使用传入的解析值执行传递给
然后方法的回调中的代码 Java脚本是一种单线程语言。这简化了大多数任务;但是,这意味着异步任务必须在回调函数中处理。是一种面向对象的回调类型,它提供了比简单回调函数更强大的功能
已解析的promise表示将调用promise对象的函数。在你的例子中,承诺已经解决了
拒绝承诺意味着将调用承诺对象的函数
在函数中返回结果时,允许。然后,每个结果都可以在将其传递给链中的下一个承诺之前更改或操纵结果
在你的例子中,你解决了第一个承诺,然后为链中的下一个承诺返回了一个结果,你不能有效地处理它,返回的结果没有任何效果。
在询问承诺之前,你应该考虑函数
var p1 = new Promise (function (res, rej){
res(42);
}).then((result) => {return result;});
哪一种是写你的文章的较短的方式
result => result
事实上是这样。它被称为函数,这意味着它将准确返回传入的内容
作为then
处理程序,那么,它完全没有任何意义——它是一个。因此,then
返回的承诺与调用then
的承诺处于完全相同的状态,具有完全相同的值(如果有)
仔细考虑一下承诺。然后(fn)
做什么。它创造了一个新的承诺。只要promise
仍然挂起,那么新的承诺也仍然挂起。如果满足了promise
,它将调用fn
,将满足的值作为参数,执行fn
,并且(所有其他条件相同)使用fn
返回的值满足新的承诺。另一方面,如果拒绝了承诺
,则不调用fn
,并且假设没有第二个参数传递给然后
,则新承诺将处于拒绝状态,并具有相同的拒绝原因——本质上,在这种情况下,承诺可以被视为“通过”
那么在
(result) => { return result; }
其中,identity
是result=>result
,当promise
使用某个值v
实现时,则使用参数v
调用identity
,返回相同的值v
,然后使用相同的值实现创建的新承诺——换句话说,它创建了一个与promise
完全相同的状态和值的新promise。换一种说法,它什么也不做——或者更确切地说,它只是创建了一个与调用时的相同的新承诺
就你而言:
promise.then(identity)
这一承诺是否已经兑现?“承诺”是什么意思
通过调用res(42)
,通过调用允诺构造函数(newpromise
)创建的允诺立即用值42
实现。(您也可以编写Promise.resolve(42)
,意思完全相同。)然后创建第二个Promise。由于调用then
的第一个承诺已经实现,因此立即使用42
的参数(result
)调用then
处理程序。它返回相同的值,因此第二个承诺,即then
创建的承诺,将使用42
的值来实现。因此,在这一点上,p1
是一个值为42
的已兑现承诺
var p1 = new Promise (function (res, rej){
res(42); })
.then((result) => {return result;});
您将看到42条日志记录到控制台
以上这些都没有什么特别神奇的地方。这一切都源于承诺的基本原则:它们可能的状态,如果需要如何创建它们,以及then
的含义。一个好的教程或文档(如)应该会让您走上正确的轨道。从技术上讲,“已解决”不同于“已实现”,并且在承诺实现时调用then
处理程序。“已解决”可以指通过另一个尚未履行的承诺得到解决的状态。那么“返回”是否解决了该承诺?并给它一个值?不,返回值并不能解析您创建的原始承诺对象。此简短的引用可能有助于进一步澄清这些术语:在基本承诺实现之前,甚至不会调用then
处理程序。通过创建的承诺,然后
通过实现的基础承诺来实现。来自then
处理程序的返回值成为已实现承诺的值。那么,什么实现了承诺呢?我认为“return”是一个新的promiseNo,return既不能创造承诺,也不能履行承诺。然后
本身在编写时创建了一个新的承诺。新的舞会
p1.then(v => console.log(v))