Javascript graphql解析器返回无法从nodejs中的异步函数为不可为null的字段返回null
别误会,我被迫使用瀑布,因为我需要一个接一个地执行一个函数。没有任何与模式或返回类型相关的问题,只是与异步瀑布有关。我所需要的只是从最终函数返回,而不是之前Javascript graphql解析器返回无法从nodejs中的异步函数为不可为null的字段返回null,javascript,node.js,express,graphql,async.js,Javascript,Node.js,Express,Graphql,Async.js,别误会,我被迫使用瀑布,因为我需要一个接一个地执行一个函数。没有任何与模式或返回类型相关的问题,只是与异步瀑布有关。我所需要的只是从最终函数返回,而不是之前 const async = require('async') module.exports = { logout : ()=>{ return async.waterfall([ callback => { setTimeout(() => {
const async = require('async')
module.exports = {
logout : ()=>{
return async.waterfall([
callback => {
setTimeout(() => {
let data = 1;
return callback(null, data)
}, 2000);
},
(data, callback) => {
setTimeout(() => {
return callback(null, data+1)
}, 2000);
}
], (err, res)=>{
console.log(res)
return res
})
}
}
来自graphiql的响应,因为它提前返回。并且console.log正在工作
{
"errors": [
{
"message": "Cannot return null for non-nullable field RootMutation.logout.",
"locations": [
{
"line": 4,
"column": 3
}
],
"path": [
"logout"
]
}
],
"data": null
}
您可以在这里使用async/Wait吗?沿着下面的路线
异步函数注销(){
让数据=等待新承诺((解析,拒绝)=>{setTimeout(()=>{resolve(1)},2000)});
数据=等待新承诺((解析,拒绝)=>{setTimeout(()=>{resolve(data+1)},2000)});
返回数据;
}
异步函数foo(){
let res=等待注销();
警报(res)
}
foo()