如何正确使用基于Javascript Promise的函数

时间:2016-05-01 18:08:01

标签: javascript node.js promise

我是新来的,因为缺乏信息而道歉。

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

我遇到了一个问题,我正在创建的新对象返回undefined。我认为这是由于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值传递。

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

以下是从'结果'返回的内容。我想抓住“令牌”#39;所以我在做result.token。但是这给了我“未定义的”#39;每时每刻。

OBJ1:

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

1 个答案:

答案 0 :(得分:0)

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

  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);
  });