[英]graphQL resolver doesn't wait for web API to complete
我正在努力为需要返回从Web API获得的值的graphQL解析器正确使用语法,这是异步发生的。 声音的控制台日志记录可以很好地显示我的声音对象列表,但是作为查询结果,解析器无法将其返回。
我已经尝试了很多方法,并且已经广泛使用Google进行搜索,但是仍然找不到神奇的咒语来让解析器等待网络查询的结果(需要两个,一个建立API连接,另一个实际获取声音列表):
var serviceProvider = require('provider-api)
Query: {
sounds: () => {
serviceProvider.connect('http://soundsource.foo', 'userName', 'pass')
.then (function (client) {
client.sounds.list()
.then (function (sounds) {
console.log('Got some sounds ' + sounds)
})
.catch(function (err) {
console.log('Error in sounds query ' + err)
})
})
return sounds
},
}
到目前为止,我尝试过的所有事情(上面代码的数十种变体)都导致了同样的事情:返回的对象为null
。
return
语句不在Promise
链中。 此外, sounds
变量不会从.then()
返回。 考虑在.then()
处调整参数名称,以避免混淆您所引用的sounds
变量
var serviceProvider = require('provider-api)
Query: {
sounds: () => {
return serviceProvider.connect('http://soundsource.foo', 'userName', 'pass')
.then (function (client) {
return client.sounds.list()
.then (function (_sounds) {
console.log('Got some sounds ' + _sounds)
return _sounds
})
.catch(function (err) {
console.log('Error in sounds query ' + err);
return err
})
})
.catch(function(err) {
console.log(err)
})
},
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.