【问题标题】:How to use Javascript Promise based functions correctly如何正确使用基于 Javascript Promise 的函数
【发布时间】:2016-08-26 11:47:51
【问题描述】:

我是新人,因此对缺乏信息表示歉意。

我有基于 Promise 的函数,它返回一个对象。然后我从该属性传递一个键值以创建另一个对象。

我遇到了一个问题,我正在创建的新对象返回未定义。我认为这是由于 JS 的异步特性造成的?

请看下文..

  post(postObject).then((result) => {
    console.log(result); // token found in returned object. See OBJ1 below
    const cookie = {
      name: 'jwtToken',
      value: result.token,
      path: '/',
      domain: '.' + APP_HOST,
      secure: false
    };
    console.log(cookie); // result.token not returned. Getting undefined
    page.addCookie(cookie);
  });

cookie.value 以未定义的形式返回

我需要能够将 result.token 作为 cookie 值传递。

当我控制台日志结果时,我可以看到生成的令牌键值。

以下是从“结果”返回的内容。我正在尝试获取“令牌”,所以我正在做 result.token。但这一直给我“未定义”。

OBJ1:

{"token":"skjdhjkshds.sdhskjdhkshdjs.shdkjshdkjsh","isCartMerged":false} 

【问题讨论】:

  • 您在哪里控制台记录cookie ?如果您在此函数之外进行控制台记录,您可能会得到空字符串。
  • 在我的问题中添加了控制台日志以显示发生了什么。
  • OBJ1 会以字符串形式返回吗?你可以试试 JSON.parse() 吗? see

标签: javascript node.js promise


【解决方案1】:

您的 result 似乎很可能是一个 JSON 字符串,您需要对其进行解析才能将各个属性作为对象获取。您可以通过在 .then() 处理程序的开头插入 console.log(typeof result) 来确定它是字符串还是对象。

  post(postObject).then((result) => {
    console.log(typeof result);       // probably shows "string"
    console.log(result);
    var parsedResult = JSON.parse(result);
    console.log(parsedResult);
    const cookie = {
      name: 'jwtToken',
      value: parsedResult.token,
      path: '/',
      domain: '.' + APP_HOST,
      secure: false
    };
    console.log(cookie);
    page.addCookie(cookie);
  });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-31
    • 2018-10-10
    • 1970-01-01
    • 1970-01-01
    • 2020-06-10
    • 2018-06-22
    • 2018-02-08
    • 1970-01-01
    相关资源
    最近更新 更多