0

我的承诺返回未定义的值。我不确定如何在我的 node.js 页面中正确执行此功能。您能否帮我解决这个问题,以便在我的上下文中以良好的方式返回地理编码后的所有值!谢谢

merge_location({
    entities,
    context,
    message,
    sessionId
}) {
    return new Promise(function(resolve, reject) {
        var location = firstEntityValue(entities, 'location');
        if (location) {
            geocoder.geocode(location).then(function(res) {
                console.log(res);
                context.location = location;
                context.lat = res[0].latitude;
                context.lng = res[0].longitude;
                delete context.MissingLocation;
            }).catch(function(err) {
                context.MissingLocation = true;
                delete context.location;
                delete context.lat;
                delete context.lng;
                console.log("Il n'y a pas de ville ");
            });
        } else {
            context.MissingLocation = true;
            delete context.location;
            delete context.lat;
            delete context.lng;
            console.log("Il n'y a pas de ville ");
        }
        console.log("I want to return this" + context.location + ' ' + context.lat + ' ' + context.lng);
        return resolve(context);
    });
}
4

1 回答 1

0

你不用说return resolve(...。相反,您只需致电resolve(...

例如:

function myPromiseFunction(x) {
    return new Promise(function (resolve, reject) {
        // Do your lengthy processing with x here

        if (everyThingLooksGood) {
            resolve(thingYouWantToReturn);
        } else {
            reject("ERROR: Things didn't go according to plan!");
        }
    });
}
于 2017-04-22T22:00:54.980 回答