将本机存储值存储到变量中

时间:2019-07-13 22:24:49

标签: ionic-framework

我正在尝试将本机存储值(我提取的)存储到变量中,以便在POST的数据中使用它,但是我的代码实际上什么也不返回...

在这里,我获取我的值并将其存储到先前定义的变量中,但这不起作用。

  bookChef(chef) {
    var customer = "";
    this.nativeStorage.getItem('userCredentials')
      .then(
        data => {
          console.log(data);
          customer = data.id;
    });
    console.log(customer);
}

我的console.log(customer)没有返回预期的整数。 有人知道如何处理吗?

2 个答案:

答案 0 :(得分:0)

在您的代码中,您正在获取凭据,然后立即尝试使用它们。您可以在nativeStorage甚至没有机会获得该值之前调用console.log。

您需要将使用凭据的代码移到then回调中。

this.nativeStorage.getItem('userCredentials')
  .then(data => {
    console.log(data);
    var customer = data.id;
    console.log(customer);
  });

答案 1 :(得分:0)

  

但是我以后需要在.then()函数中使用我的客户变量

保存.then方法返回的承诺:

this.customerPromise  = this.nativeStorage.getItem('userCredentials')
.then(data => {
    console.log(data);
    var customer = data.id;
    console.log(customer);
    return customer;
},error => {
    console.log(error);
    throw error;
});

然后将承诺用于chain其他操作:

//LATER
this.customerPromise.then( customer => {
    console.log(customer);
    // DO other stuff
});

由于调用promise的.then方法会返回新的派生promise,因此很容易创建promise的promise。可以创建任何长度的链,并且由于一个承诺可以用另一个承诺来解决(这将进一步推迟其解决方案),因此可以在链中的任何点暂停/推迟对承诺的解决。这样就可以实现功能强大的API。

有关更多信息,请参见