我有一个预先存在的JavaScript函数,它返回一个promise。我这样称呼它
function on_success(result){
//process result
}
foo(params).then(on_success)
我想编写包装函数bar,它将调用foo并测量执行时间。我想以完全相同的方式调用bar:
bar(params).then(on_success)
我该怎么做?
这就是我最后写的。这是@Sidney答案的简化版本
function bar(params){
var start_time=new Date().getTime()
function print_time(x){
var end_time=new Date().getTime()
console.log(end_time-start_time)
return x
}
return foo(params).then(print_time)
}
如果我理解您的问题,那么您正在寻找以下内容:
const myAsyncFunction = url =>
fetch(url).then(res => res.text())
const timePromise = (promiseFn, ...args) => {
const start = Date.now()
return promiseFn(...args)
.then(result => {
console.log(`Promise finished in ${(Date.now() - start) / 1000} seconds`)
return result
}, error => {
console.log(`Promise errored in ${(Date.now() - start) / 1000} seconds`)
return Promise.reject(error)
})
}
timePromise(myAsyncFunction, 'https://example.com')
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句