我正在使用CoffeeScript构建一个简单的自制JavaScript框架。
在我的模型类中,我有一个fetch方法,如下所示:
fetch : (historyState, callback) ->
NProgress.start()
$.get historyState.hash, (data) ->
(data || data = {})
data = JSON.parse data
if data.success
return callback data
.fail (response) ->
if response.statusText == 'Forbidden'
window.location.replace '/login'
.always ->
NProgress.done()
然后在我的控制器视图方法中,我可以使用它:
view : (id) ->
state = History.getState()
model.fetch state, (data) ->
$('.js-include').html( controller.render 'items/show', data )
这样做的效果还不错,但我想知道如何将多个数据发送到视图?
理想情况如下:
view : (id) ->
state = History.getState()
items = model.fetch state
categories = model.fetch '/api/url/categories'
$('.js-include').html( controller.render 'items/show', { items : data, categories : categories } )
现在,我无法从fetch方法中获取回调数据,所以我有点卡住了。
答案 0 :(得分:0)
当你调用$ .get时,jQuery返回 promise ,当服务器响应异步时,jQuery将履行承诺。
如果你想让响应同步,你可以像这样调用jQuery:
response = $.ajax(
url: "..."
async: false
).response
以下是AJAX的jQuery文档:https://api.jquery.com/jQuery.ajax/#jQuery-ajax-settings
否则您需要等待,直到您的每个异步请求都已完成。