在解决promises state

时间:2018-02-06 06:07:04

标签: javascript node.js promise

我想访问private_key上的variable console.log,但在传递此值时,结果显示在控制台上显示promise{pending}

let private_key=new Promise((resolve,reject)=>{     
 setTimeout(function(){
 resolve('464f64f6f464gs64g');

 },5000);
});

private_key.then((message)=>{
  return message;
});
console.log(private_key);

那么如何在变量中存储值并访问它。

2 个答案:

答案 0 :(得分:2)

您可以访问then块中已解析的值。

通过添加另一个value块,您也可以在解析后访问then



let private_key=new Promise((resolve,reject)=>{     
 setTimeout(function(){
  resolve('464f64f6f464gs64g');
 },5000);
});

private_key
      .then( message => console.log(message));
      
private_key
  .then( message => message)
  .then(key => console.log(key));




您也可以使用async-await



let getKey = async () => {
  let private_key = new Promise((resolve,reject)=> {     
   setTimeout(() => resolve('464f64f6f464gs64g'),5000);
  });

  var key = await private_key;
  console.log(key);
}

getKey();




答案 1 :(得分:0)

您正在获得承诺{pending},因为您已经编写了非阻塞代码,并且承诺将在5秒后解决。因此执行将向下移动并尝试记录private_key但是由于承诺未得到解决,它将显示未决。 您可以像这样编写代码

let private_key=new Promise((resolve,reject)=>{     
setTimeout(function(){
resolve('464f64f6f464gs64g');

},5000);
});

private_key.then((message)=>{
console.log(message);
});