说我有这个功能:
rest = require('restler');
function authenticate(credentials) {
var accessToken;
rest.post(BaseURL + '/Users/login', { data : credentials })
.on('complete', function(result, response) {
console.log(result.id); // this works fine
accessToken = result.id;
});
return accessToken;
};
我希望它返回包含string
的{{1}}
当我跑这个时:
accessToken
我得到var at = authenticate({ "username": "test", "password" : "test" });
console.log('Access Token:', at);
答案 0 :(得分:4)
标准的,可接受的方式是修改authenticate
功能:
function authenticate(credentials, cb) {
rest.post(BaseURL + '/Users/login', { data : credentials })
.on('complete', function(result, response) {
console.log(result.id); // this works fine
if (cb) { cb(result.id); }
}
});
};
然后像这样执行:
authenticate({ "username": "test", "password" : "test" }, function(at) {
console.log(at);
});
异步调用必须使用回调或promise进行处理。承诺是“非常”但只不过是回调。这就是为什么你看到几乎每个Node API利用回调。
答案 1 :(得分:0)
你有一个}
备用完整功能:
rest.post(BaseURL + '/Users/login', {
data: credentials
})
.on('complete', function (result, response) {
console.log(result.id); // this works fine
accessToken = result.id;
}); // `}` spare here
希望得到这个帮助。