繁体   English   中英

graphQL解析器不等待Web API完成

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM