我试图了解承诺如何在js中起作用。我有以下量角器测试:
fieldConstraintsList.forEach(function(constrains){
// WARNING... or not??
var input = element(by.model(constrains.model)); //Getting input element
input.getAttribute('value').then(function(initialValue){
// Do validation stuff....
//WARNING... or not??
input.clear();//Restore initial value
});
});
这会收到一个约束列表,以应用于具有标识每个输入的模型的表单。正如您所看到的,promise在循环内部执行,因此,只要存在对在promise之外声明的input
变量的引用,我期望有不同的行为(请参阅稍后的编辑部分)。 / p>
有人能给我一些提示或参考吗?
提前致谢。
EDITED
我期待这样的行为:假设constrains
的长度为2,创建了2个元素:input = A
和input = B
,并且再次创建了2个承诺{{1} }和promise(A)
。只要在承诺(A)得到解决时承诺没有立即得到解决(或者是???),那么promise(B)
和B应该是明确的而不是A.
简而言之,这就是我所期待的:input = B
=> input = A
=> input = B
=> promise(A)
让我烦恼的应用程序的实际行为是:promise(B)
=> input = A
=> promise(A)
=> input = B
。