一部のコールバックが呼び出されない理由を疑問に思って、コールバックを掘り下げるのに長い時間を費やしています。結局のところ、問題は、ではなく、誤った宣言にありました
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の実装の詳細に関係なく、要約すると次の1つになります。
function(){};//throws SyntaxError
"something valid, or function call", function(){};//no error
誰かに説明してもらいたいです。SyntaxError
後者が有効であるのに(少なくともブラウザコンソールでは)最初にスローするのはなぜですか?匿名関数を宣言しているようです。試してみると同じことが起こります
eval("function(){};//throws SyntaxError")
eval("'lala',function(){};//no error")
では、なぜ最初が無効で、後者が無効なのか、誰かが私に説明できますか?