等到Promise回答

时间:2018-05-16 10:31:42

标签: javascript asynchronous promise es6-promise

阅读之前:对不起我的英语水平。

var match = matchPromise != undefined ? matchPromise.then(ret_val =>
    {
        return ret_val;
    })
    : false;

    if (match) {
        //continue here after Promise response
    }

我的问题是,如何在进入if之前等待?因为每次match == false matchtrue如果有答案的话,from bs4 import BeautifulSoup source_code = """<span class="UserName"><a href="#">Martin Elias</a></span>""" soup = BeautifulSoup(source_code, HTML.parser) 就可以C:\Windows\Fonts

我希望你能理解我的问题。

感谢。

2 个答案:

答案 0 :(得分:0)

您正在寻找

(matchPromise != null
  ? matchPromise
  : Promise.resolve(false)
).then(match => {
    // continue here after Promise response
});

请注意,如果不使代码不同步,就不能等待任何事情。

答案 1 :(得分:-2)

您可以在Promise.resolve中包含可能的承诺并在其上使用.then

Promise.resolve(matchPromise).then(
  match=>{
    if(match){...
  }
)

澄清:您无法以同步方式阅读承诺,您承诺的唯一选择是使用.thenasync/await。有一种方法可以将同步值(在您的情况下为undefined)转换为具有Promise.resolve的承诺(在您的情况下是未定义的承诺)。

所以现在,如果matchPromise是一个承诺,那就不再重要了,因为你确定它是,然后在.then中处理它,它将为你提供已解析的值或{{ 1}}价值,无论哪种方式; if语句的结果是一样的。