栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

将额外的参数传递给jquery ajax promise回调

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

将额外的参数传递给jquery ajax promise回调

我发现包括一个新的间接级别真的很容易,就像这样:

var extraParam = 'xyz';$.post("MyUrl", JSON.stringify(data))        .done(function(a,b,c) { onMyUrlLoaded(a, b, c, extraParam); });

这样,除了三个标准参数外,回调还将接收extraParam。

当然,如果将promise存储在变量中(例如,由函数返回的变量),也可以执行以下操作:

function getUrl() {  // some pre ...  var promise = $.post("MyUrl", JSON.stringify(data));  return promise;}

可以这样调用和使用:

var promise = getUrl();var extraParam = 'xyz';promise.done(function(a,b,c) { onMyUrlLoaded(a, b, c, extraParam); });

这样做的语法较短,其中包括使用bind。

调用

bind
函数时,会得到一个新函数。传递给bind的第一个参数将成为
this
return函数的主体。其他参数将被 前置 到原来的参数。

以下代码显示了如何使用绑定。对于TL; DR,请看最后两个代码块

// To show the results in the pagevar $log = $('#log');var log = function(text) {    $log.append(text+'<br/>');};// This returns a promise, and resolves it after the specified// timeout. This behaves like a jQuery ajax call (but for the// provided timeout)var trigger = function(timeout) {    log('<b>trigger</b> invoked');    var deferred = $.Deferred();    setTimeout(function() {        log('<b>trigger</b> resolving promise');        deferred.resolve('A','B');    }, timeout);    return deferred;};// This is the function we want to invoke// The promise returns a and b - the extra params// must be supplied in some wayvar extraParams = function(extra1, extra2, a, b) {    log('<b>extraParams</b> extra1:' + extra1);    log('<b>extraParams</b> extra2:' + extra2);    log('<b>extraParams</b> a:' + a);    log('<b>extraParams</b> b:' + b);};// Doing it using indirectiontrigger(500).then(function(a,b) {  extraParams('extra1','extra2',a,b);});// Doing it using bind()trigger(1200).then(  extraParams.bind(this,'extra1','extra2'));<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><div id="log"></div>


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/404104.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号