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我很乐意;)祝你好运