请考虑以下代码:
function toolsQueryResult(){
const query = `query{......}`
return request('http://...', query,).then(data => { return data })
}
var toolsQueryResult= toolsQueryResult();
var toolsNames = [];
toolsQueryResult.then(function(result){
result['key'].forEach(function(item){
toolsNames.push(item["name"])
})
})
console.log(toolsNames)
这将返回并打印出空列表“[]”给我。有人知道为什么吗? 但是如果我把“console.log()”放在两个最后的“})”之间,它会正确地返回工具列表。我应该如何使用这个promise对象在第二个“})”之后正确地获得工具列表码?
答案 0 :(得分:0)
原因是,您的console.log
语句在承诺toolsQueryResult
解决之前执行。如果您有调试器工具并放置断点以查看我刚刚说过的内容,那将非常有用和有用。
也就是说,在承诺被解析或拒绝之外的console.log
超出了整个目的,这意味着您在完成执行之前尝试输出一个语句,因此当您放置{{1}时在console.log
函数内部声明它输出结果。
调整您的代码(将结果修改为一个简单的数组)供您调试并查看:https://jsfiddle.net/jayas_godblessall/vz8mcteh/
或在此处执行以查看:
then