我只是花了很长时间在 Promise 中挖掘回调,想知道为什么不调用某些回调。最后的问题是声明不正确,而不是
Promise.when(null).then(function () {
var p = new Promise();
p.fail(new Error("some message"));
return p;
}).then(function () {
console.log("success");
}, function (err) {
console.log("failure");
});
我做了
Promise.when(null).then(function () {
var p = new Promise();
p.fail(new Error("some message"));
return p;
}).then(function () {
console.log("success");
}), function (err) {
console.log("failure");
};
无论 Promise 的实现细节如何,它都归结为一件事:
function(){};//throws SyntaxError
"something valid, or function call", function(){};//no error
我希望有人向我解释这一点。为什么第一个是抛出SyntaxError
而后者是有效的(至少在浏览器控制台中)?它似乎声明了匿名函数。当我尝试时也会发生同样的事情
eval("function(){};//throws SyntaxError")
eval("'lala',function(){};//no error")
那么有人可以解释一下为什么第一个无效而后者无效吗?