繁体   English   中英

转换以下函数以返回承诺

[英]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
});

请参阅Promise.resolvePromise.reject

如下更改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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM