添加了回报承诺,但随后不执行

时间:2019-08-26 20:40:38

标签: javascript

根据此处的答案https://stackoverflow.com/a/52174259/2690257 如果我希望将方法转换为Promise函数,请插入return New Promise in the code.

我目前有这种方法。

function takeWebshot(fLine, sLine, pID, prodPlate) {

    return new Promise((resolve, reject) => {
      webshot('citylocsblog.com/preview/productpreview/testy.html?prod=' + prodPlate, '../screenshot/' + pID +'.png', options, function(err) {
        if(err) { return reject(err); } resolve()
      });
    })

在上面我已经这样做了。
webshot方法是我在npm中使用的模块,该模块使用幻影js进行屏幕截图。执行后,它将返回一个错误,这就是为什么最后我将函数resolve或reject履行诺言的原因。

我这样调用takeWebshot方法,然后执行一个then:

takeWebshot(firstLine, secondLine, previewID, productPlate)
.then(() => console.log("promise works!"))

Console.log则不执行任何操作。我没有错误,只是没有触发。有什么想法我做错了吗?

2 个答案:

答案 0 :(得分:-1)

仅当webshot回调出现错误时,您才兑现承诺;如果没有err,请尝试解决:

return new Promise((resolve, reject) => {
      webshot('...' + prodPlate, '../screenshot/' + pID +'.png', options, function(err) {
        //error
        if(err) {
          reject(err);
        }

        //no error
        resolve();
      });
    })

答案 1 :(得分:-2)

您键入:

    public bool IsNationalIdExist(string nationalId)
    {
        var validateName = _user.FirstOrDefault
                            (x => x.UserId == nationalId);
        if (validateName != null)
        {
            return true;
        }
        else
        {
            return false;
        }
       // return false;
    }

尝试:

[IsValidNationalId]
    [UniqueNationalId]
    public string NationalId { get; set; }