我正在尝试获取一些代码来监听API,并返回结果。 根据返回的API,某些函数会调用。
它侦听API,并可以在控制台日志中流式传输数据,以及调用传递适当参数的函数。 但是 返回之前,它只能工作2到15分钟:
“未处理的拒绝TypeError:无法读取未定义的属性'0'”
经过大量的google搜索,我发现我的问题是我需要在声明时以某种方式定义变量值,即使该变量在API返回其数据之前都没有值。虽然我不知道该怎么做,但我所看到的示例对我的代码不起作用。
async function main () {
await smoke.api.streamOperations('head', function(err, result){
var type = result[0] //<--- This is the line that will return a typeError
var data = result[1]
//More stuff too happen//
}
我希望结果是API返回的字符串的第一个值。 如果没有typeError,它将成功。 (它将返回诸如注释,投票,custom_json之类的值) TypeError每次都会发生,这与它要花多长时间有关。
我得到的确切错误是:
Unhandled rejection TypeError: Cannot read property '0' of undefined
如何避免这种情况?
更新
我已经删除了异步和等待表达式 -功能更流畅,但仍然遇到相同的typeError
function main () {
smoke.api.streamOperations('head', function(err, result){
//var type = 0
var type = result[0]
var data = result[1]
答案 0 :(得分:0)
您的async / await语法错误,当您使用async / await时,不需要回调函数。因此,回调中的结果值为undefined
。尝试按以下方式使用它:
async function main () {
var result = await smoke.api.streamOperations('head');
var type = result[0]; //<--- This is the line that will return a typeError
var data = result[1];
//More stuff too happen//
}