Javascript 返回延迟对象的链接函数

Javascript 返回延迟对象的链接函数,javascript,jquery,jquery-deferred,Javascript,Jquery,Jquery Deferred,我有一些返回jQuery延迟对象的函数,但我很难理解如何链接它们并处理结果 考虑以下示例: const start=Date.now(); //打印带有时间戳的消息。 功能日志(v){ log(`${Date.now()-start}${v}`); } //返回一个延迟函数,该函数在1秒后用“value”解析。 功能测试(值){ 日志(`test(${value})`); return$.Deferred(函数(def)){ setTimeout(函数(){ 日志(`resolve(${val

我有一些返回jQuery延迟对象的函数,但我很难理解如何链接它们并处理结果

考虑以下示例:

const start=Date.now();
//打印带有时间戳的消息。
功能日志(v){
log(`${Date.now()-start}${v}`);
}
//返回一个延迟函数,该函数在1秒后用“value”解析。
功能测试(值){
日志(`test(${value})`);
return$.Deferred(函数(def)){
setTimeout(函数(){
日志(`resolve(${value})`);
定义解析(值);
}, 1000);
});
}
//例如:
测试(42)
.then(函数(v){log(v);})
.然后(测试(99))
.then(函数(v){log(v);})
.then(函数(){log('done');})

每个延迟只解析一次。对于每个延迟链,您必须正确地附加它们。另外,对test的第二个调用需要位于函数中,以便它不会立即执行

const start=Date.now();
//打印带有时间戳的消息。
功能日志(v){
log(`${Date.now()-start}${v}`);
}
//返回一个延迟函数,该函数在1秒后用“value”解析。
功能测试(值){
日志(`test(${value})`);
return$.Deferred(函数(def)){
setTimeout(函数(){
日志(`resolve(${value})`);
定义解析(值);
}, 1000);
});
}
//例如:
测试(42)
.then(函数(v){log(v);})
.然后(函数(){
测试(99)
.then(函数(v){log(v);})
.then(函数(){log('done');});
});

啊,我明白了,谢谢。这样筑巢是唯一的方法吗?因此,如果我在用for循环或其他东西构建一个长链,我必须编写一些帮助函数来按顺序执行它们,或者将所有内容巧妙地转换成这个嵌套形式?一旦延迟解析,它将执行附加到它的all then(),而不管一个是否包含另一个延迟。因此,你必须将你的逻辑与此联系起来。顺便说一句,我做了一个小实验,利用你的建议,如果我只是将第二个测试调用作为一个函数(返回延迟对象),即使没有嵌套,它实际上似乎也能正常工作。也许如果
then
处理程序返回某个表,它会改变链的其他部分在操作什么?你能分享你的实验链接吗?嗯,很有趣。