[英]Converting the following functions to return promises
我将如何修改解析HTML字符串的以下函数,以使其返回延迟的Prom?
function getProductName(html) {
var temp = document.createElement('div');
temp.innerHTML = html;
var name;
try {
name = temp.querySelector('h1[itemprop*=\'name\']').textContent.trim();
$log.debug('Name found: ' + name);
return name;
}
catch(err) {
return err;
}
}
您没有做任何异步的事情,因此,如果要返回已经解决的Promise
,可以这样进行:
function getProductNameAsPromise(html) {
var temp = document.createElement('div');
temp.innerHTML = html;
var name;
try {
name = temp.querySelector('h1[itemprop*=\'name\']').textContent.trim();
$log.debug('Name found: ' + name);
return Promise.resolve(name);
}
catch(err) {
return Promise.reject(err);
}
}
getProductNameAsPromise(myHtml).then(function(productName) {
// do something with productName
});
如下更改getproductName
function getProductName(html) {
var temp = document.createElement('div');
temp.innerHTML = html;
var name = temp.querySelector('h1[itemprop*=\'name\']').textContent.trim();
$log.debug('Name found: ' + name);
return name;
}
并像这样使用
Promise.resolve().then(() => getProductName('')).catch(e => console.error(e));
任何错误都将导致拒绝,因此将执行catch代码
但是,正如第一个答案正确指出的那样,代码没有什么异步的,因此Promises并不是真正的答案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.