javascript在'然后'中返回true / false承诺回应

时间:2018-04-05 15:57:43

标签: javascript node.js promise return

我已经看到很多关于这类问题的问题,我理解异步行为是如何运作的。

但我发现的所有答案都无法帮助我。 在这里,我使用谷歌的DialogFlow节点api库,我只想在匹配意图时返回TRUE或FALSE。更容易请求,但它让我发疯,抱歉打扰。

function myFun(request){
  sessionClient
    .detectIntent(request)
    .then(responses => {
      console.log('Detected intent');
      const result = responses[0].queryResult;
      if (result.intent) {
        console.log(`  Intent: ${result.intent.displayName}`);
        return true; //even tried return new Promise
      } else {
        console.log(`  No intent matched.`);
        return false;
      }
    })
    .catch(err => {
      console.error('ERROR:', err);
    });
}

if(myFun(exampleRequest)==false){
//do stuff
}

编辑:完整示例

当我调用此函数时,我总是显然未定义。但是真的无法理解如何在一个简单的示例中正确返回布尔值。

解决:感谢@TrevorD的回答。 这就是我弄清楚的方法:

function myFun(request){

  return new Promise(function (resolve, reject) {
// Send request and log result
    sessionClient
      .detectIntent(request)
      .then(responses => {
        console.log('Detected intent');
        const result = responses[0].queryResult;
        if (result.intent ) {
          console.log(`  Intent: ${result.intent.displayName}`);
          resolve(true)
        } else {
          console.log(`  No intent matched.`);
          resolve(false) //return false;
        }
      })
      .catch(err => {
        console.error('ERROR:', err);
      });
  });
}

0 个答案:

没有答案