Promise返回一个对象而不是实际的字符串值[Javascript w / Firebase]

时间:2017-08-11 05:28:45

标签: javascript firebase firebase-realtime-database promise

所以我研究了Promises并得出结论,通过使用.then,它将实际执行"里面的异步函数。然后,我继续更新我的代码:



function getCurrentKey(){
		return tailorRef.once('value').then(function(data){
			data.forEach(function(childData){
				if ( (loggedUname == childData.val().tUsername) && (loggedPword == childData.val().tPassword) ){
					Ukey = childData.key;
				}
			});
        return Ukey;
		});
	}
	
	currentKey = getCurrentKey();
	
	console.log("key = " + currentKey);




注意:var currentKey是全局的

控制台中的预期输出为key = "some unique key",而是显示key = [object Promise]。我试图将.val()放在childData.key之后实际获取值而不是对象,但它没有用。

我的Promise实现或其结构有问题吗?或者我的结论是错的?

1 个答案:

答案 0 :(得分:0)

因为第一次返回发生在执行resolve部分之前。

如果您真的想打印currentKey,请执行以下操作。

function getCurrentKey(){
 tailorRef.once('value').then(function(data){
        data.forEach(function(childData){
            if ( (loggedUname == childData.val().tUsername) && (loggedPword == childData.val().tPassword) ){
                currentKey = childData.key;
                printCurrentKey(currentKey);
            }
        });
    }); 
}


printCurrentKey(key){
  console.log(key)
}

注意:在调用printCurrentKey时请注意范围。