我正在尝试将我的开发保持为模块化且易于使用,但我觉得这可能会花费太多。
我正在调用一个函数,该函数使用一个函数将数据作为参数返回,该函数也使用一个返回数据的函数。所以它们是这样嵌套的:
append_vid(
compile_data(
request_data(vid_id)
)
);
因此,request_data()
会返回compile_data
用于将另一个对象返回append_vid()
的对象。
我想知道这是否在语法上是可接受的,因为我以前从未见过有人将函数作为参数嵌套。是否有更有效或标准化的方法来实现这一目标,而不会失去单独功能的模块化。
答案 0 :(得分:2)
这是完全有效的语法。如果你正在寻找同步电话。
function MethodOne(value) {
console.log(value);
}
function MethodTwo(value) {
console.log(value);
return value * 4;
}
function MethodThree(value) {
console.log(value);
return value * 2;
}
MethodOne(
MethodTwo(
MethodThree(1)
)
);
如果从异步调用返回值,则必须更改方法签名并使用promises。以下是Async的示例。
function MethodOne(value) {
var promise = new Promise(function(resolve, reject) {
setTimeout(function() {
value = value * 4;
console.log(value);
resolve(value);
}, 1000);
});
return promise;
}
function MethodTwo(value) {
var promise = new Promise(function(resolve, reject) {
setTimeout(function() {
value = value * 2;
console.log(value);
resolve(value);
}, 1000);
});
return promise;
}
function MethodThree(value) {
console.log(value);
var promise = new Promise(function(resolve, reject) {
setTimeout(function() {
resolve(1)
}, 1000);
});
return promise;
}
MethodThree(1).then(MethodTwo).then(MethodOne);