Javascript 如何访问承诺返回的值?
我是stackoverflow的新手,我已经处理一个问题好几天了。我有下一段代码:Javascript 如何访问承诺返回的值?,javascript,mongodb,promise,es6-promise,tabulator,Javascript,Mongodb,Promise,Es6 Promise,Tabulator,我是stackoverflow的新手,我已经处理一个问题好几天了。我有下一段代码: let comptot = function (value, data) { return fetch(API_TOT) .then(response => response.json()) .then((data) => { let x = data[0].cantidad; console.log(x); return x;
let comptot = function (value, data) {
return fetch(API_TOT)
.then(response => response.json())
.then((data) => {
let x = data[0].cantidad;
console.log(x);
return x;
})
.catch(error => {
console.log("el error es el siguiente", error)
})}
问题是我无法访问它返回的值。它会将值(230)记录到控制台,但我想将该值显示到表中(我使用的是tablator),它只返回:
Promise {<pending>}
__proto__: Promise
[[PromiseStatus]]: "resolved"
[[PromiseValue]]: "230"
请帮我解决这个问题,我真的很感激 有了这个片段
let comptot = function (value, data) {
return fetch(API_TOT)
.then(response => response.json())
.then((data) => {
let x = data[0].cantidad;
console.log(x);
return x;
})
.catch(error => {
console.log("el error es el siguiente", error)
})
}
comptot
引用您提到的Promise
对象,使用提取其值
comptot.then(res => {
console.log("Resolved value", res);
}).catch(err => {
console.log("Rejected value: ", err)
})
阅读更多关于其API的信息,这与我发布的另一个问题的答案相同。我不知道我的代码出了什么问题,所以我发布了两个不同的问题,问了两件我认为不相关但我错了的事情
我发现,问题是在tablator中,表中的mutator从另一个源获取数据,而不是表中其余部分的数据,因此表在mutator开始工作时就已经构建好了,我发现mutator在启动时需要尽快获取数据,但它的源数据还没有准备好,所以我所做的就是使用:
函数delayIt(){table.setData(API_URL)}
setTimeout(delayIt,1000)
因此,当构建表时,来自mutator源的数据已经可用,所以当启动mutator时,一切都正常工作。很抱歉,如果让人困惑,我无法找到其他解释方法。请在一个函数中使用comptot函数,该函数也是一个异步等待函数,或者在打印之前等待承诺解决,即使用“'''comptop()。然后(result=>console.log)或使用try-using-console.log(wait-comptop()),请注意,async Wait只能在函数内部工作。async
函数返回一个承诺。您可以返回com
,然后使用。然后使用。此外,这是最常见的问题副本:您可以从使用wait
或then()
调用的函数返回的承诺中获取值。这是你仅有的两个选择。所有async
函数都会返回一个承诺,因此您必须始终对返回的值使用wait
或.then()
来获取值。这是否回答了您的问题?好的,现在我想我可能正在返回数据,至少正在打印到控制台。我做了你和评论中的人告诉我要做的一切(比如使用.then()返回数据,谢谢大家!),但我无法让tablator在表上显示值。我试图使用mutator来处理以下代码,但无法让它显示数据:mutator:comtot()。然后((res)=>{console.log(res);return res;})
我对tablator不太熟悉,但我建议阅读承诺和相关API上的MDN文档。始终记住,“承诺/its.then()/.catch()/或相关API将始终返回承诺”
comptot.then(res => {
console.log("Resolved value", res);
}).catch(err => {
console.log("Rejected value: ", err)
})