我试图创建一个回调函数,但不断被告知data is not a function
。我已经根据另一个问题进行了设置,但似乎没有用?
getRequest("http://", function(error, data){
console.log(data);
});
function getRequest(url, error, data) {
request({
method: 'GET',
uri: url,
headers: {
'Content-Type': 'application/json',
'dataType': 'json'}
}, function (error, response, body){
if(!error && response.statusCode == 200){
data(JSON.parse(body));
} else {
error(error);
}
})
}
答案 0 :(得分:1)
如果你想同时进行这两项工作,成功和失败都会导致一次回调,你应该用data
(或代码中的cb
)来代替调用error
。
getRequest("http://", function(error, data){
if(error) throw error
console.log(data)
});
function getRequest(url, cb, data) {
request({
method: 'GET',
uri: url,
headers: {
'Content-Type': 'application/json',
'dataType': 'json'}
}, function (error, response, body){
if(cb) {
cb(error, JSON.parse(body))
}
})
}
否则,您应该检查是否提供了两个回调
function getRequest(url, success, error) {
request({
method: 'GET',
uri: url,
headers: {
'Content-Type': 'application/json',
'dataType': 'json'}
}, function (error, response, body){
if(error && failure) {
failure(error)
} else if(success) {
success(JSON.parse(body))
}
})
}
在这种情况下,您应该提供两个回调函数,第一个用于成功结果,第二个用于错误,这是不常见的模式。