【发布时间】:2018-03-24 20:58:42
【问题描述】:
这是我的函数,它返回一个包含按钮文本值的承诺
getToggleViewButtonText(){
return this.toggleBasicOrAdvancedView.getText()
}
现在,我又写了一个函数,它接受其他函数作为参数,解析 promise 并返回它的值。
promiseResolve(func){
return func.then(value=>{
return value
});
问题是当我使用它时
promiseResolve(this.getToggleViewButtonText())
我得到了承诺,而不是按钮元素的文本值。但是,如果我在 promiseResolve 函数中执行 console.log(value)。我可以看到价值就在那里。可以帮助我在这里出错的地方。
【问题讨论】:
-
“我得到的是承诺,而不是返回的文本值” - 你为什么期望有什么不同?承诺的全部意义在于它包装了 asynchronous 行为,因此您必须在回调中访问已解析的值。
-
为什么需要使用
Promise?this.toggleBasicOrAdvancedView.getText()返回什么? -
@jonrsharpe 我的问题是,如果控制台.log(value) 我看到打印了正确的值,我认为这意味着承诺在那时得到了解决。但是,如果我确实返回值,然后像
promiseResolve(this.getToggleViewButtonText())那样在外部使用它,我就不会得到值回来。是什么原因? -
@guest271314 这会返回一个承诺,当它被解析时会给出一个按钮元素的文本值。
标签: javascript promise protractor es6-promise