gpt4 book ai didi

javascript - graphQL 解析器不等待 Web API 完成

转载 作者:行者123 更新时间:2023-12-01 03:02:13 26 4
gpt4 key购买 nike

我正在努力为 graphQL 解析器获取正确的语法,该解析器需要返回从 Web API 获取的值,这是异步发生的。声音的控制台日志记录很好地显示了我的声音对象列表,但我无法将其作为查询结果由解析器返回。

我已经尝试了很多方法,并在 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)
})
},
}

关于javascript - graphQL 解析器不等待 Web API 完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46383945/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com