vit*_*y-t 7 javascript promise
考虑以下两个例子......
function test1() {
return new Promise(function () {
return 123;
});
}
test1()
.then(function (data) {
console.log("DATA:", data);
return 456;
})
.then(function (value) {
console.log("VALUE:", value);
});
Run Code Online (Sandbox Code Playgroud)
它什么也没输出.
function test2() {
return new Promise(function (resolve, reject) {
resolve(123);
});
}
test2()
.then(function (data) {
console.log("DATA:", data);
return 456;
})
.then(function (value) {
console.log("VALUE:", value);
});
Run Code Online (Sandbox Code Playgroud)
它输出:
DATA: 123
VALUE: 456
Run Code Online (Sandbox Code Playgroud)
promise构造函数不能简单地解析TEST 1中的返回值有什么缺点或规范矛盾?
为什么它必须与TEST 2中的结果不同?
我试图理解构造的promise对象如何根据promise规范与可能的对象不同.
传递给的函数Promise不是onFulfilled或的回调函数onRejected.MDN称之为executor.可以将其视为承诺尝试捕获的异步上下文.从异步方法返回不起作用(或有意义),因此您必须调用resolve或reject.例如
var returnVal = new Promise(function() {
return setTimeout(function() {
return 27;
});
});
Run Code Online (Sandbox Code Playgroud)
......不按预期工作.如果要executor在异步调用完成之前返回一个值,则无法重新解析promise.
此外,它可能是隐含return undefined;在函数末尾的隐含.考虑以相同方式运行的这些执行程序.
// A
function a() { return undefined; }
// B
function b() { }
Run Code Online (Sandbox Code Playgroud)
什么会告诉Promise构造函数你真的想解决undefined?
a() === b(); // true
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1971 次 |
| 最近记录: |