首页 > 解决方案 > 提升和全局变量

问题描述

如何从此 PouchDB 文档中分配变量“username_show”的值?我已经尝试过提升技术,但我认为我需要将全局变量提升到数据结构之外,然后再提升到函数之外。

    var db = new PouchDB('myDb');
    var remoteCouch = false;
    var username_show;
    
  function loadSettings(){	    
    var settings = {
    	    _id: "UNa",
    	    username : ""
    }
  
    	   
    db.get('UNa').then(function (doc) {
		var username_show=doc.username; 
		
     	    });
	
  }

  loadSettings();
  alert("The Username="+username_show);

标签: javascriptglobal-variablespouchdb

解决方案


您的警报在username_show未定义时运行,因为它是在承诺的结果中异步分配的。

username_show在您的 loadSettings 函数中,避免在引用全局变量时使用 var 关键字。

为了在赋值后查看变量,你可以在你的 Promise 中调用一个函数。

var db = new PouchDB('myDb');
var remoteCouch = false;
var username_show;

function loadSettings(){        
  var settings = {
    _id: "UNa",
    username : ""
  }


  db.get('UNa').then(function (doc) {
    username_show=doc.username; 
    showUsername();
  });

}

function showUsername() {
  alert("The Username="+username_show);
}

loadSettings();

推荐阅读