Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何访问承诺返回的值?_Javascript_Mongodb_Promise_Es6 Promise_Tabulator - Fatal编程技术网

Javascript 如何访问承诺返回的值?

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;

我是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;
    })
    .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)
})