承诺值没有返回但是如果我执行console.log()它会打印该值

时间:2017-10-12 19:50:47

标签: javascript promise protractor es6-promise

这是我的函数,它返回一个包含按钮文本值的承诺

getToggleViewButtonText(){
        return this.toggleBasicOrAdvancedView.getText()
    }

现在,我又编写了一个函数,它将其他函数作为参数并解析promise并返回其值。

promiseResolve(func){
    return func.then(value=>{
         return value
    });

问题在于我何时使用

promiseResolve(this.getToggleViewButtonText())

我得到了promise而不是button元素的文本值。但是,如果我在promiseResolve函数中执行console.log(value)。我可以看到价值在那里。在这里我出错了可以帮到我。

2 个答案:

答案 0 :(得分:0)

Promise.then()返回promise本身。承诺的重点是你不知道什么时候会解决。因此,您只能使用异步方法获得结果。

this.getToggleViewButtonText().then(value => {
    // Do something with the value here
});

答案 1 :(得分:0)

如果要求在下一行的代码中获取Promise的值,您可以使用async/await

function getToggleViewButtonText() {
  return Promise.resolve(1)
}


async function promiseResolve(func) {
  let value = await func;
  if (value > 1) {
    return value
  } else {
    return value + " is not greater than 1"
  }
}

promiseResolve(getToggleViewButtonText()).then(data => console.log(data))