require(['dojo/request/registry', 'dojo/Deferred', 'dojo/on', 'dojo/dom-attr', 'dojo/domReady!'], function(request, Deferred, on, domAttr){ request.register('/user/1', function(url, options){ var def = new Deferred(); setTimeout(function(){ def.resolve({first:"Kevin", last:"Armstrong"}); }, 2000); return def; }); on(dojo.byId('btn'), 'click', function(){ dojo.byId('output').innerHTML = 'waiting...'; domAttr.set(dojo.byId('btn'), 'disabled', 'disabled'); var promise = request('/user/1'); promise.then(function(data){ dojo.byId('output').innerHTML = '<div>Name is '+data.first+' '+data.last+'</div>'; domAttr.remove(dojo.byId('btn'), 'disabled'); }); }); });
<button id="btn">Fetch</button> <div id="output"></div>
body { margin: 5px; } #output { padding: 10px; }