【发布时间】:2016-05-21 22:06:38
【问题描述】:
这是我的代码:
检查用户是否关注官方 Twitter 帐户(这里我返回了新的 Promise
var isFollowing = function(sender) {
return new promise(function(resolve, reject) {
var following = false;
var params = {
source_id: sender,
target_screen_name: config.get('twitter.official_account')
};
TwitObj.get('friendships/show', params, function(err, data) {
if (!err) {
following = data.relationship.source.following;
resolve(following);
} else {
reject(err);
}
});
});
};
验证:
var validateMsg = function(dm) {
var sender = getSender(dm);
var result = [];
isFollowing(sender.id)
.then(function(response) {
if (!response) {
result = interactiveMessage(false, lang.__('FOLLOW_MAIN', sender.name));
console.log(result); // Displays as expected
return result; // Not returning value Do I need to return promise again? If yes, WHY?
}
});
};
主要实现:
var direct_message = function(msg) {
verifyAccount().catch(function(err) {
console.error(err);
});
var dm = msg.direct_message;
var result = validateMsg(dm);
console.log(result);
};
问题是我应该如何强制 validateMsg 函数在 then 函数中返回 result 变量。
更新: 在调试时,我知道了,
console.log(response)在 验证函数在抛出未定义后稍后显示 "then" 函数,表示程序无法得到响应 由于异步性质,I/O 不会立即被阻塞。如何 解决这个问题?
【问题讨论】: