代码之家  ›  专栏  ›  技术社区  ›  JDT

未知原因调用var函数

  •  0
  • JDT  · 技术社区  · 8 年前

    我有下面的代码,它似乎调用 var promiseFeedback 我不知道为什么。。。这意味着即使在创建文档时发生错误,也会调用它。然而,只有在没有 err

    有人能弄清楚原因吗?

    if (json) {
        createDocument(documentUrl, context, json, function(res){
        var promiseFeedback = callFB (context, res);
        var collection = `mydb`
    
        client.createDocument(collection, res, (err, result) => {
            if(err) {
                context.log(err);
                return context.done();
            } else {
                Promise.all([promiseFeedback]).then(function(results){ 
                context.log("promiseFeedback: " + results[0]);
                context.done();
                });
            }
        });
        });
    }
    function callFB(context, res) {
            return new Promise((resolve, reject) => {
    
            var requestUrl = url.parse( URL );
                var requestBody = {
                    "id": res.id
                };
    
                var body = JSON.stringify( requestBody );
    
                const requestOptions = {
                    hostname: requestUrl.hostname,
                    path: requestUrl.path,
                    method: 'POST',
                    headers: {
                    'Content-Type': 'application/json',
                    'Content-Length': Buffer.byteLength(body),
                    }
                };
    
                var request = https.request(requestOptions, function(res) {
                    var data ="";
                    res.on('data', function (chunk) {
                        data += chunk
                    });
                    res.on('end', function () {
                    resolve(true);
                    })
                }).on('error', function(error) {
                    context.log("request error:", error);
                    resolve(false);
                });
                request.write(body);
                request.end();
                });    
    }
    
    1 回复  |  直到 8 年前
        1
  •  1
  •   Jerry Liu Phantom    8 年前
    var promiseFeedback = callFB (context, res);
    

    此语句执行 callFB 立即,不只是给承诺起另一个名字。这个承诺 超出的回调(范围) err 和 Promise.all([promiseFeedback]) client.createDocument 是。

    要解决此问题:

    删除 var promiseFeedback = callFB (context, res); 和改变 到 callFB(context, res) . 你不需要使用 Promise.all 因为你只有一个承诺要解决。

    var promiseffeedback=callFB(上下文,res); 进入其他部分。

    推荐文章