我需要将一个值传递给一个函数,该函数包含一个修饰符方法,然后return
修改后的值。
最好的方法是什么?
我有read
函数(解析内容)和scan
函数(在内容中查找单词。
到目前为止,我有以下代码:
scanContent = function(url){
read(url, function(err, article, meta) {
var content = article.title + article.content
return scan(content)
}
return scan(content)
});
return scan(content)
}
这显然不起作用,但我不确定这里的方法是什么。
答案 0 :(得分:1)
您需要提供回调函数参数并将其与结果一起调用:
function byThree(n, callback) {
var x = n * 3;
callback(x);
}
var multiply = function(n, callback) {
byThree(n, function(result) {
callback(result);
});
};
multiply(5, function(result) {
console.log('result: ' + result);
});
答案 1 :(得分:1)
function byThree(n){
return n * 3;
}
multiply = function(n){
return byThree(n);
};
console.log("result: "+multiply(5));
虽然以下内容更有意义:
function multiply(n, m){
return n * m;
};
console.log("result: "+multiply(5, 3));
以下更有意义:
console.log("result: " + 5 * 3);
答案 2 :(得分:0)
如果函数从内部回调中获得有意义的结果,那么它只能通过另一个回调返回有意义的结果。你不能欺骗程序流程。
所以,就像那样:
var scanContent = function(url, cb){
read(url, function(err, article, meta) {
var content = article.title + article.content
return cb(scan(content)); // asume 'scan' is defined elsewhere
}
});
};
scanContent(function(text) { console.log(text); });
这可能导致callback hell。来自ES6的Promise可以避免这种情况。并generators使代码更加直接。
使用Promises(和箭头函数):
var scanContent = function(url){
// simplified; it's better to always return a promise in the real code
return read(url).then((err, article) => scan(article.title + article.content));
};
scanContent('example.com').then((text) => console.log(text));