Vla*_*rak 8 javascript promise es6-promise
我已经阅读了诺兰劳森几次承诺的问题,但仍然有一些关于JavaScript承诺的问题.在Nolan的帖子结束时,你可以找到四个谜题的答案(我在这里附上了截图).
所以,我有几个问题:
为什么doSomethingElse()第一个谜题中的功能undefined有价值?在我看来,它必须resultOfDoSomething像第四个谜题一样.
第3和第4个谜题有什么区别?在then我们写的第一个拼图中doSomethingElse(),在第四个拼图中,我们在这里只写出函数的名称,doSomethingElse.这怎么可能?在第四个难题中真正doSomethingElse做了then什么?
为什么doSomethingElse()第三个拼图中的功能在同一时刻开始doSomething?
\n\n\n\n
\n- 为什么
\ndoSomethingElse()第一个谜题中的功能[通过]undefined?
让我们看一个更简单的例子:
\n\nfoo(); // Line #1\nfoo(42); // Line #2\nRun Code Online (Sandbox Code Playgroud)\n\n两条线的区别是什么?在第 #1 行,我们调用 foo 但不传递任何值(因此undefined),而在第 #2 行我们调用 foo 并传递 42。
回到帖子:
\n\ndoSomething().then(function () {\n return doSomethingElse( );\n // ^-- we are not passing a value\n}).then(finalHandler);\nRun Code Online (Sandbox Code Playgroud)\n\n这与第四个谜题有何不同?在第四个谜题中,我们将对函数的引用传递给then。为 Promise 提供对函数的引用,允许它稍后使用 Promise 的结果调用它。[1]
\n\n\n\n
\n- 第三个和第四个谜题有什么区别?在第三个谜题中,我们写 [...]
\ndoSomethingElse(),在第四个谜题中,我们写 [...]doSomethingElse。
为了解释第三个和第四个谜题的差异,让我们看一些更简单的例子。以下两行有何不同:
\n\nvar foo = function foo() {\n return 42;\n};\nvar a = foo; // line #1\nvar b = foo(); // line #2\nRun Code Online (Sandbox Code Playgroud)\n\n在上面的代码片段中,a将包含对函数的引用foo,而b将包含调用 foo 的结果(这将是 42)。
\n\n\n\n
\n- 为什么
\ndoSomethingElse()第三个谜题与 同一时刻开始doSomething?
与第三个和第四个函数之间的差异类似,请注意使用 来()调用(或调用)该函数。在这里,我们调用两者doSomething(),而doSomethingElse()不是等待承诺“解决”(等待第一个调用完成)。在之前让我们逐步执行:
doSomething并返回 PromisedoSomethingElse()到promise\xe2\x80\x94但是等等,doSomethingElse()我们正在调用doSomethingElse(),所以这将是异步发生的,我们将把它返回的promise附加到返回的promise doSomething()。finalHandler到 Promise 中| 归档时间: |
|
| 查看次数: |
318 次 |
| 最近记录: |