别误会,我被迫使用瀑布,因为我需要执行一个又一个函数。不存在与模式或返回类型相关的问题,只是使用异步瀑布。我所需要的只是从最后一个函数返回,而不是之前。
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
})
}
}
来自graphicql的响应,因为它提前返回。console.log正在中工作
{
"errors": [
{
"message": "Cannot return null for non-nullable field RootMutation.logout.",
"locations": [
{
"line": 4,
"column": 3
}
],
"path": [
"logout"
]
}
],
"data": null
}
您能在这里使用async/await吗?沿着以下的线路
async function logout(){
let data = await new Promise((resolve,reject) => {setTimeout(() => { resolve(1)},2000)});
data = await new Promise((resolve,reject) => {setTimeout(() => { resolve(data + 1)},2000)});
return data;
}
async function foo() {
let res = await logout();
alert(res)
}
foo()
此外,我不熟悉异步库,但在您的示例中,应该实际返回async.waterfall()
调用,因为它根据文档返回undefined
。
也许只是
const async = require('async')
module.exports = {
logout : ()=>{
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
})
}
}
如果没有,也许可以共享您正在使用的GraphQL库以及