Javascript回调或返回字符串

时间:2014-08-02 13:43:15

标签: javascript string asynchronous callback return

我想知道以下是正确的事情,或者哪一个更快?

我有一个生成HTML字符串并将其返回的函数。

我应该如何通过回调返回我生成的字符串,或者只返回它?

MyApp.prototype.makeChatMsg = function(message, callback) {

   var html = '<div class="media">';
   html += '<div class="media-body">';
   //html += '<h4 class="media-heading">' + message.user.first_name + ' ' + message.user.last_name + '</h4>';
   html += '<p>' + message.content + '</p>';
   html += '</div>';
   html += '</div>';

   callback(html); // see here
} 

VS

MyApp.prototype.makeChatMsg = function(message) {

   var html = '<div class="media">';
   html += '<div class="media-body">';
   //html += '<h4 class="media-heading">' + message.user.first_name + ' ' + message.user.last_name + '</h4>';
   html += '<p>' + message.content + '</p>';
   html += '</div>';
   html += '</div>';

   return html; // see here
}

我在MyApp范围内使用这样的函数

第一种方法

this.makeChatMsg(incomingMessage, function(html) {
    $('#messages').append(html); 
));

第二种方法

var newMessage = this.makeChatMsg(incomingMessage);
$('#messages').append(newMessage);

生成HTML字符串是否是异步任务?我只是不确定..

2 个答案:

答案 0 :(得分:2)

通常我们应该return来自一个函数,并避免使用callbacks

我认为回调适用于必须像AJAX请求一样使用non-blockingasynchronous调用的情况。用callback

完成所有事情

因为您不知道任务何时完成,所以如果您想在完成任务后执行某些操作,我们会使用回调。

我说returncallback更好。如果回调太多,则会产生callback pyramid

答案 1 :(得分:1)

使用更简单的解决方案,返回字符串,直到您有理由做更复杂的事情。

从我所看到的,makeChatMsg将非常快速地运行。没有理由让它异步运行。