Javascript jquery如何将参数传递给回调函数到管道中
我有一个简单的例子:Javascript jquery如何将参数传递给回调函数到管道中,javascript,jquery,promise,jquery-deferred,Javascript,Jquery,Promise,Jquery Deferred,我有一个简单的例子: function firstFunction(){ var d = jQuery.Deferred(); // some very time consuming asynchronous code... setTimeout(function() { console.log('1'); d.resolve(); }, 1000); return d.promise(); } function secondFunction(param){
function firstFunction(){
var d = jQuery.Deferred();
// some very time consuming asynchronous code...
setTimeout(function() {
console.log('1');
d.resolve();
}, 1000);
return d.promise();
}
function secondFunction(param){
console.log('parm = '+param);
var d = $.Deferred();
setTimeout(function() {
console.log('2');
d.resolve();
}, 10);
return d.promise();
}
firstFunction().pipe(secondFunction('OK'));
结果:
参数=正常
2.
1.
我失去了函数之间的同步。
t如何通过同步将secondFunction的参数传递到管道中?好的,您需要做一些小的更改: 您的代码将立即执行
secondFunction
,并将执行返回值作为参数传递给firstFunction
,这不太可能是您想要的
阅读完整答案:
console.log=函数(消息){
$('body')。追加(''+消息+'');
}
函数firstFunction(){
var d=jQuery.Deferred();
//一些非常耗时的异步代码。。。
setTimeout(函数(){
console.log('1');
d、 解决();
}, 1000);
返回d.promise();
}
函数二次函数(参数){
log('parm='+param);
var d=$.Deferred();
setTimeout(函数(){
console.log('2');
d、 解决();
}, 10);
返回d.promise();
}
firstFunction()。然后(function()){
第二个函数('OK')
});代码>
不要忘记返回回调中的承诺,即每个异步函数都应该返回一个有用的承诺。在您的情况下,then
回调缺少返回
,因此您无法将任何内容链接到它。哦,等等,您仍然在使用管道
?!用替换它,然后立即用替换,它已经被弃用多年了@Bergi我只是接了个问题:)但我的答案更新了。。谢谢关于你的评论,我不明白。你的意思是我应该在secondFunction('OK')
行之后添加return??
?如果是这样,我还需要什么?@collo21我很乐意;)祝你好运