我现在和 Volt 一起工作有点疯狂。当我尝试做一些更复杂的事情时,我最终在浏览器控制台中收到异常“ArgumentError: a promise has been chained”。
堆栈跟踪没有指向任何我可以解释为有用的东西。
这个错误实际上意味着什么,我该如何去寻找原因?
我会发布一些代码,但其中一些错误出现在页面加载时没有指出问题出在哪里,所以我需要发布整个应用程序:/
我现在和 Volt 一起工作有点疯狂。当我尝试做一些更复杂的事情时,我最终在浏览器控制台中收到异常“ArgumentError: a promise has been chained”。
堆栈跟踪没有指向任何我可以解释为有用的东西。
这个错误实际上意味着什么,我该如何去寻找原因?
我会发布一些代码,但其中一些错误出现在页面加载时没有指出问题出在哪里,所以我需要发布整个应用程序:/
Volt 使用 Opal 的 promise 实现,我相信它基于 JS 领域的 A+ 规范。您看到的错误是因为承诺只能有一个 .then 或 .fail 块。每个 .then 或 .fail 都会返回一个新的 Promise,然后您可以将其链接起来。
所以你可以这样做:
promise = Promise.new
promise2 = promise.then do
..
end
promise2.then do
..
end
(请注意,我正在分配 promise2 而不是再次链接第一个)
但是你不能这样做:
promise = Promise.new
promise.then do
...
end
promise.then do
..
end
(注意我是如何多次调用 .then 的)
编写第一个更紧凑的方法是链接结束
promise = Promise.new
promise.then do
..
end.then do
..
end.fail do
..
end
Volt 绑定期望一个没有被链接的承诺。此外,我认为我可以让它在你可以多次链接的地方工作,尽管我还没有考虑到这一切的含义,所以我可能是错的。如果我有时间,我可能会编写一个新的 Promise 实现来处理这个问题。如果您仍然看到该错误并且以上内容无法解释其原因,请告诉我。谢谢!