【发布时间】:2017-03-23 17:33:20
【问题描述】:
我正在尝试对回调函数的调用进行分页,但在第二次调用时出现错误
我的功能是:
let content = ''
let size = 100
let from = 1
function result(size, from, callback) {
api.performRequest('/myContents', 'GET', {
pageSize: size,
startFrom: from,
filter:'NOT contents:[* TO *]',
}, function (data) {
content += JSON.stringify(data)
callback()
})
}
function logContent() {
const parsed = JSON.parse(content)
console.log('content length: ', parsed.body.length)
if (parsed.body.length === size) {
calculate(size, from + size)
}
}
function calculate(size, from) {
result(size, from, logContent)
}
calculate(size, from)
第一次调用控制台返回
内容长度:100
在第二次通话中,我在日志中获取了所有 json 块并出现错误
JSON 中第 32847 位的意外令牌 {
我认为这与回调有关,并且在函数完成之前发生了一些事情,但我无法看到我在这里做错了什么
函数 performRequest 只是做一个 http get 并返回一个 json 块
export function performRequest(endpoint, method, data, callback) {
const headers = {
Authorization: auth,
'Content-Type': 'application/json; charset=utf-8',
'Access-Control-Expose-Headers': 'Location,ETag',
}
let options = {
host: host,
port: port,
path: endpoint,
headers: headers,
}
if (method === 'GET') {
endpoint += '?' + queryString.stringify(data)
const additionalOptions = {
path: endpoint,
}
options = _.merge(options, additionalOptions)
}
return http.get(options, function (response) {
// Continuously update stream with data
let body = ''
response.on('data', function (d) {
body += d
})
response.on('end', function () {
// Data reception is done
const parsed = JSON.parse(body)
callback({
totalCount: parsed.totalCount,
body: parsed.content,
})
})
})
}
【问题讨论】:
标签: javascript node.js express ecmascript-6