What does the exception "ArgumentError: a promise has already been chained" mean, and how do I debug it?
What does the exception "ArgumentError: a promise has already been chained" mean, and how do I debug it?
我现在和 Volt 一起工作有点疯狂。当我尝试做一些更复杂的事情时,我最终在浏览器控制台中收到异常 "ArgumentError: a promise has already been chained"。
堆栈跟踪没有指向任何我认为有用的东西。
这个错误实际上意味着什么,我该如何着手找出原因?
我会 post 一些代码,但其中一些错误出现在页面加载时,没有指示问题出在哪里,所以我需要 post 整个应用程序:/
Volt 使用 Opal 的 promise 实现,我认为它基于 JS 领域的 A+ 规范。您看到的错误是因为承诺只能有一个 .then 或 .fail 块。每个 .then 或 .fail 都将 return 一个新的承诺,然后您可以将其链接起来。
所以你可以这样做:
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 on promise 的)
一个更紧凑的写第一个的方法是链接结尾的
promise = Promise.new
promise.then do
..
end.then do
..
end.fail do
..
end
伏特绑定需要一个尚未被链接的承诺。另外,我想我可以让它在你可以多次链接的地方工作,尽管我没有考虑过这的所有含义,所以我可能是错的。如果我有时间,我可能会编写一个新的 promise 实现来处理这个问题。如果您仍然看到该错误并且以上内容无法解释为什么会出现该错误,请告诉我。谢谢!
我现在和 Volt 一起工作有点疯狂。当我尝试做一些更复杂的事情时,我最终在浏览器控制台中收到异常 "ArgumentError: a promise has already been chained"。
堆栈跟踪没有指向任何我认为有用的东西。
这个错误实际上意味着什么,我该如何着手找出原因?
我会 post 一些代码,但其中一些错误出现在页面加载时,没有指示问题出在哪里,所以我需要 post 整个应用程序:/
Volt 使用 Opal 的 promise 实现,我认为它基于 JS 领域的 A+ 规范。您看到的错误是因为承诺只能有一个 .then 或 .fail 块。每个 .then 或 .fail 都将 return 一个新的承诺,然后您可以将其链接起来。
所以你可以这样做:
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 on promise 的)
一个更紧凑的写第一个的方法是链接结尾的
promise = Promise.new
promise.then do
..
end.then do
..
end.fail do
..
end
伏特绑定需要一个尚未被链接的承诺。另外,我想我可以让它在你可以多次链接的地方工作,尽管我没有考虑过这的所有含义,所以我可能是错的。如果我有时间,我可能会编写一个新的 promise 实现来处理这个问题。如果您仍然看到该错误并且以上内容无法解释为什么会出现该错误,请告诉我。谢谢!